dotfiles/nix/home/programs/helix/default.nix

91 lines
2.5 KiB
Nix
Raw Normal View History

{ 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
{
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 = {
command = "${pkgs.typescript-language-server}/bin/typescript-language-server";
2024-03-15 15:06:30 -07:00
args = [ "--stdio" ];
config.hostInfo = "helix";
};
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";
};
};
};
};
language = [
{
name = "nix";
auto-format = true;
language-servers = [
2024-06-28 01:56:41 -07:00
{ name = "nixd"; }
];
}
2024-03-15 15:06:30 -07:00
{
name = "typescript";
file-types = [ "tsx" "ts" ];
2024-03-15 15:06:30 -07:00
auto-format = true;
formatter = { command = "prettier"; args = ["--parser=typescript"]; };
2024-03-15 15:06:30 -07:00
language-servers = [
{ name = "eslint"; }
2024-03-15 15:06:30 -07:00
{
name = "typescript-language-server";
}
];
}
];
};
settings = {
theme = "catppuccin_mocha";
editor = {
line-number = "relative";
lsp.display-messages = true;
cursor-shape = {
insert = "underline";
normal = "block";
select = "block";
};
bufferline = "multiple";
};
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
};
};
};
};
}