nix-configs/modules/shell/helix.nix

179 lines
4.7 KiB
Nix
Raw Normal View History

2024-06-12 11:23:20 +00:00
{
config,
helix-inline-diags,
...
}: {
2024-04-03 17:04:00 +00:00
home-manager.users.jade = {pkgs, ...}: {
home = {
sessionVariables.EDITOR = "hx";
packages = [
pkgs.nil
2023-12-08 10:49:22 +00:00
pkgs.vscode-langservers-extracted
pkgs.nodePackages.typescript-language-server
pkgs.emmet-language-server
pkgs.typst-lsp
];
};
programs.helix = {
enable = true;
2024-06-12 11:23:20 +00:00
package = helix-inline-diags.outputs.packages."x86_64-linux".default;
settings = {
theme = "gruvbox";
editor = {
line-number = "relative";
bufferline = "multiple";
color-modes = true;
2024-03-14 15:04:08 +00:00
cursorline = true;
2024-04-16 19:35:32 +00:00
auto-save = true;
auto-format = true;
2024-06-12 11:23:20 +00:00
end-of-line-diagnostics = "hint";
inline-diagnostics = {
cursor-line = "hint";
other-lines = "error";
};
lsp = {
display-messages = true;
display-inlay-hints = true;
};
2024-04-03 17:04:00 +00:00
popup-border = "popup";
shell = ["nu" "-c"];
2024-03-14 15:04:08 +00:00
statusline.left = [
"mode"
"spinner"
"spacer"
"version-control"
"file-name"
"diagnostics"
"read-only-indicator"
"file-modification-indicator"
"spacer"
];
statusline.right = [
"workspace-diagnostics"
"register"
"position"
"selections"
2024-03-14 15:04:08 +00:00
"file-encoding"
"file-type"
];
2024-06-12 11:23:20 +00:00
idle-timeout = 50;
indent-guides = {
render = true;
character = "";
};
whitespace = {
render = {
space = "all";
tab = "all";
newline = "none";
};
characters = {
space = "·";
nbsp = "";
tab = "";
};
};
};
2024-03-03 13:23:02 +00:00
keys = {
2024-03-03 13:27:38 +00:00
normal = {
space."=" = ":fmt";
};
insert = {
up = "no_op";
down = "no_op";
left = "no_op";
right = "no_op";
pageup = "no_op";
pagedown = "no_op";
home = "no_op";
end = "no_op";
};
2024-03-03 13:23:02 +00:00
};
};
languages = {
language-server = {
"nu-builtin-lsp" = {
command = "${config.users.defaultUserShell}/bin/nu";
args = ["--lsp"];
};
"rust-analyzer" = {
config = {
2024-04-16 19:35:32 +00:00
check.command = "check";
completion.snippets.custom = {
"pub fn" = {
prefix = ["pfn" "pubfn"];
postfix = ["pfn"];
body = [
"pub fn $\{receiver\}() {"
"\\t$1"
"}"
];
scope = "type";
};
};
2024-03-14 15:04:08 +00:00
completion.termSearch.enable = true;
diagnostics.enable = true;
inlayHints = {
bindingModeHints.enable = true;
closureCaptureHints.enable = true;
closureReturnTypeHints.enable = true;
discriminantHints.enable = true;
expressionAdjustmentHints = {
hideOutsideUnsafe = true;
};
lifetimeElisionHints.enable = "skip_trivial";
};
interpret.tests = true;
lens = {
references = {
adt.enable = true;
trait.enable = true;
};
};
typing.autoClosingAngleBrackets.enable = true;
};
};
"emmet-language-server" = {
command = "emmet-language-server";
args = ["--stdio"];
};
2024-03-14 15:04:08 +00:00
"psalm" = {
command = "psalm";
args = ["--language-server"];
};
"typst-lsp" = {
config = {
exportPdf = "onType";
};
};
};
language = [
{
name = "nu";
language-servers = ["nu-builtin-lsp"];
}
2024-03-14 15:04:08 +00:00
{
name = "php";
language-servers = ["psalm"];
}
{
name = "nix";
formatter = {
command = "${pkgs.alejandra}/bin/alejandra";
args = ["--quiet"];
};
auto-format = true;
}
2023-12-08 10:49:22 +00:00
{
name = "html";
roots = [".git"];
2023-12-15 13:38:15 +00:00
language-servers = ["vscode-html-language-server" "emmet-language-server"];
auto-format = false;
2023-12-08 10:49:22 +00:00
}
];
};
};
};
}