nixos-config/modules/home-manager/helix.nix

146 lines
5.4 KiB
Nix

{ pkgs, config, lib, ...}:
{
options.speccon18.hm.helix.enable = lib.mkEnableOption "enables specs custom helix configuration";
config = lib.mkIf config.speccon18.hm.helix.enable {
home.packages = with pkgs; [
nodePackages_latest.yaml-language-server
nodePackages_latest.bash-language-server
nodePackages_latest.vscode-langservers-extracted
nodePackages_latest.dockerfile-language-server-nodejs
nodePackages_latest.typescript
nodePackages_latest.typescript-language-server
nodePackages_latest.svelte-language-server
nodePackages_latest.vls
python311Packages.python-lsp-server
# rnix-lsp is archived need to update to fix CVE-2024-27297
rust-analyzer
taplo
];
programs.helix = {
enable = true;
settings = {
theme = "monokai_pro_octagon";
editor = {
line-number = "relative";
shell = ["zsh" "-c"];
completion-trigger-len = 0;
scroll-lines = 1;
scrolloff = 5;
cursorline = true;
cursor-shape = {
normal = "block";
insert = "bar";
select = "underline";
};
color-modes = true;
indent-guides.render = true;
file-picker.hidden = false;
auto-pairs = true;
lsp = {
enable = true;
display-messages = true;
auto-signature-help = true;
display-signature-help-docs = true;
snippets = true;
goto-reference-include-declaration = true;
};
statusline = {
mode = {
normal = "NORMAL";
insert = "INSERT";
select = "SELECT";
};
left = [ "mode" "separator" "spinner" "separator" "file-name" ];
right = [ "diagnostics" "position" "file-encoding" ];
};
};
};
themes = {
monokai_pro_octagon = let
red = "#ff657a";
orange = "#ff9b5e";
yellow = "#ffd76d";
green = "#bad761";
blue = "#9cd1bb";
purple = "#c39ac9";
base0 = "#161821";
base1 = "#1e1f2b";
base2 = "#282a3a";
base3 = "#3a3d4b";
base4 = "#535763";
base5 = "#696d77";
base6 = "#767b81";
base7 = "#b2b9bd";
base8 = "#eaf2f1";
base8x0c = "#303342";
in {
"ui.linenr.selected" = { bg = base3; };
"ui.text.focus" = { fg = yellow; modifiers = ["bold"]; };
"ui.menu" = { fg = base8; bg = base3; };
"ui.menu.selected" = { fg = base2; bg = yellow; };
"ui.virtual.whitespace" = base5;
"ui.virtual.ruler" = { bg = base1; };
"info" = base8;
"hint" = base8;
"ui.background" = {};
"ui.statusline.inactive" = { fg = base8; bg = base8x0c; };
"ui.statusline" = { fg = base8; bg = base4; };
"ui.statusline.normal" = { fg = base4; bg = blue; };
"ui.statusline.insert" = { fg = base4; bg = green; };
"ui.statusline.select" = { fg = base4; bg = purple; };
"ui.popup" = { bg = base3; };
"ui.window" = { bg = base3; };
"ui.help" = { fg = base8; bg = base3; };
"ui.selection" = { bg = base4; };
"ui.cursor.match" = { bg = base4; };
"ui.cursorline" = { bg = base1; };
"comment" = { fg = base5; modifiers = ["italic"]; };
"ui.linenr" = { fg = base5; };
"ui.cursor.primary" = { fg = base7; modifiers = ["reversed"]; };
"attribute" = blue;
"variable" = base8;
"constant" = orange;
"variable.builtin" = red;
"constant.builtin" = red;
"namespace" = base8;
"ui.text" = { fg = base8; };
"punctuation" = base6;
"type" = green;
"type.builtin" = { fg = red; };
"label" = base8;
"constructor" = blue;
"function" = green;
"function.macro" = { fg = blue; };
"function.builtin" = { fg = "cyan"; };
"operator" = red;
"variable.other.member" = base8;
"keyword" = { fg = red; };
"keyword.directive" = blue;
"variable.parameter" = "#f59762";
"error" = red;
"special" = "#f59762";
"module" = "#f59762";
"warning" = "orange";
"constant.character.escape" = { fg = base8; };
"string" = yellow;
"constant.numeric" = purple;
"diff.plus" = green;
"diff.delta" = "orange";
"diff.minus" = red;
"diagnostic.warning" = { underline = { color = "orange"; style = "curl"; }; };
"diagnostic.error" = { underline = { color = red; style = "curl"; }; };
"diagnostic.info" = { underline = { color = base8; style = "curl"; }; };
"diagnostic.hint" = { underline = { color = base8; style = "curl"; }; };
"markup.heading" = green;
"markup.bold" = { fg = "orange"; modifiers = ["bold"]; };
"markup.italic" = { fg = "orange"; modifiers = ["italic"]; };
"markup.strikethrough" = { modifiers = ["crossed_out"]; };
"markup.link.url" = { fg = "orange"; modifiers = ["underlined"]; };
"markup.link.text" = yellow;
"markup.quote" = green;
};
};
};
};
}