nixos/home/lilith/helix.nix
2025-03-16 19:17:31 +01:00

103 lines
2.4 KiB
Nix

{
pkgs,
lib,
...
}: {
programs.helix = {
enable = true;
settings = {
editor = {
line-number = "relative";
mouse = false;
cursorline = true;
cursor-shape = {
insert = "bar";
normal = "block";
select = "underline";
};
file-picker = {hidden = false;};
statusline = {
left = ["mode" "spinner"];
center = ["file-name" "read-only-indicator" "file-modification-indicator"];
right = [
"version-control"
"diagnostics"
"selections"
"register"
"position"
"position-percentage"
"file-encoding"
"file-line-ending"
"file-type"
];
separator = "|";
};
inline-diagnostics = {
cursor-line = "hint";
other-lines = "warning";
};
lsp = {
display-messages = true;
display-inlay-hints = true;
};
indent-guides = {render = true;};
idle-timeout = 0;
bufferline = "always";
soft-wrap = {
enable = true;
};
};
keys = {
insert = {
"C-space" = "completion";
};
};
};
languages = {
language-server = {
rust-analyzer = {
config = {
checkOnSave.command = "clippy";
cargo.features = "all";
cargo.unsetTest = [];
};
};
pyright = {
command = "${pkgs.pyright}/bin/pyright-langserver";
args = ["--stdio"];
config = {};
};
nil.command = "${pkgs.nil}/bin/nil";
bash-language-server = {
command = "${pkgs.bash-language-server}/bin/bash-language-server";
args = ["start"];
};
};
language = [
{
name = "python";
auto-format = true;
language-servers = [{name = "pyright";}];
formatter = {
command = "/bin/sh";
args = [
"-c"
"${pkgs.isort}/bin/isort - | ${pkgs.black}/bin/black -q -l 120 -C -"
];
};
}
{
name = "nix";
auto-format = true;
language-servers = [{name = "nil";}];
formatter = {
command = lib.getExe pkgs.nixfmt-rfc-style;
args = ["-s"];
};
}
];
};
};
}