2025-09-25 00:28:07 -07:00
|
|
|
{ pkgs, ...}:
|
|
|
|
|
let
|
|
|
|
|
# We need a version of vscode-language-servers that's less than 4.10
|
|
|
|
|
oldNixpkgs = import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/f68797befe20fc56153363e71ea0f0b74542db4b.tar.gz") {};
|
|
|
|
|
in
|
2023-11-03 11:07:59 -07:00
|
|
|
{
|
|
|
|
|
programs.helix = {
|
|
|
|
|
enable = true;
|
|
|
|
|
languages = {
|
2024-03-15 15:06:30 -07:00
|
|
|
language-server = {
|
2024-06-28 01:56:41 -07:00
|
|
|
nixd = {
|
|
|
|
|
command = "${pkgs.nixd}/bin/rnix-lsp";
|
2024-03-15 15:06:30 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
typescript-language-server = {
|
2025-09-25 00:28:07 -07:00
|
|
|
command = "${pkgs.typescript-language-server}/bin/typescript-language-server";
|
2024-03-15 15:06:30 -07:00
|
|
|
args = [ "--stdio" ];
|
|
|
|
|
config.hostInfo = "helix";
|
|
|
|
|
};
|
2025-09-25 00:28:07 -07:00
|
|
|
|
|
|
|
|
eslint = {
|
|
|
|
|
command = "${oldNixpkgs.nodePackages.vscode-langservers-extracted}/bin/vscode-eslint-language-server";
|
|
|
|
|
args = ["--stdio"];
|
|
|
|
|
config = {
|
|
|
|
|
run = "onType";
|
|
|
|
|
validate = "on";
|
|
|
|
|
nodePath = "";
|
|
|
|
|
rulesCustomizations = [];
|
|
|
|
|
workingDirectory.mode = "location";
|
|
|
|
|
showDocumentation.enable = true;
|
|
|
|
|
experimental = { useFlatConfig = false; };
|
|
|
|
|
problems = { shortenToSingleLine = false; };
|
|
|
|
|
codeAction = {
|
|
|
|
|
enable = true;
|
|
|
|
|
location = "separateLine";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
2023-11-03 11:07:59 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
language = [
|
|
|
|
|
{
|
|
|
|
|
name = "nix";
|
|
|
|
|
auto-format = true;
|
|
|
|
|
language-servers = [
|
2024-06-28 01:56:41 -07:00
|
|
|
{ name = "nixd"; }
|
2023-11-03 11:07:59 -07:00
|
|
|
];
|
|
|
|
|
}
|
2024-03-15 15:06:30 -07:00
|
|
|
{
|
|
|
|
|
name = "typescript";
|
2025-09-25 00:28:07 -07:00
|
|
|
file-types = [ "tsx" "ts" ];
|
2024-03-15 15:06:30 -07:00
|
|
|
auto-format = true;
|
2025-09-25 00:28:07 -07:00
|
|
|
formatter = { command = "prettier"; args = ["--parser=typescript"]; };
|
2024-03-15 15:06:30 -07:00
|
|
|
language-servers = [
|
2025-09-25 00:28:07 -07:00
|
|
|
{ name = "eslint"; }
|
2024-03-15 15:06:30 -07:00
|
|
|
{
|
|
|
|
|
name = "typescript-language-server";
|
|
|
|
|
}
|
|
|
|
|
];
|
|
|
|
|
}
|
2023-11-03 11:07:59 -07:00
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
settings = {
|
|
|
|
|
theme = "catppuccin_mocha";
|
|
|
|
|
editor = {
|
|
|
|
|
line-number = "relative";
|
|
|
|
|
lsp.display-messages = true;
|
|
|
|
|
cursor-shape = {
|
|
|
|
|
insert = "underline";
|
|
|
|
|
normal = "block";
|
|
|
|
|
select = "block";
|
|
|
|
|
};
|
2025-09-25 00:28:07 -07:00
|
|
|
bufferline = "multiple";
|
2023-11-03 11:07:59 -07:00
|
|
|
};
|
|
|
|
|
keys = {
|
|
|
|
|
normal = {
|
|
|
|
|
g = { a = "code_action"; }; # Maps `ga` to show possible code actions
|
|
|
|
|
"ret" = [ "move_line_down" "goto_first_nonwhitespace" ]; # Maps the enter key to move to start of next line
|
|
|
|
|
X = "extend_line_above";
|
|
|
|
|
D = "delete_char_backward";
|
|
|
|
|
"S-ret" = [ "move_line_up" "goto_first_nonwhitespace" ];
|
|
|
|
|
};
|
|
|
|
|
insert = {
|
2024-03-15 15:06:30 -07:00
|
|
|
j = { j = "normal_mode"; }; # Maps `jj` to exit insert mode
|
2023-11-03 11:07:59 -07:00
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
}
|