diff --git a/hosts/nabro/default.nix b/hosts/nabro/default.nix index d31732e..352ebf2 100644 --- a/hosts/nabro/default.nix +++ b/hosts/nabro/default.nix @@ -15,6 +15,7 @@ dev.enable = true; shell.enable = true; zsh.enable = true; + helix.enable = true; }; }; } diff --git a/modules/dev.nix b/modules/dev.nix index 4a2cc0b..6f119ed 100644 --- a/modules/dev.nix +++ b/modules/dev.nix @@ -20,6 +20,7 @@ in ty nil nixd + nixfmt ]; }; } diff --git a/modules/shell/default.nix b/modules/shell/default.nix index b180fc6..f19128f 100644 --- a/modules/shell/default.nix +++ b/modules/shell/default.nix @@ -55,17 +55,7 @@ in pinentry.package = pkgs.pinentry-qt; }; - programs.helix = { - enable = true; - defaultEditor = true; - settings = { - theme = "ayu_dark"; - editor = { - line-number = "relative"; - lsp.display-messages = true; - }; - }; - }; + }; }; } diff --git a/modules/shell/helix.nix b/modules/shell/helix.nix new file mode 100644 index 0000000..14367c9 --- /dev/null +++ b/modules/shell/helix.nix @@ -0,0 +1,152 @@ +{ + config, + lib, + pkgs, + userVars, + ... +}: + +let + cfg = config.dotfiles.helix; +in +{ + options.dotfiles.helix = { + enable = lib.mkEnableOption "Fully configured Helix editor"; + }; + + config = lib.mkIf cfg.enable { + home-manager.users."${userVars.username}" = { + programs.helix = { + enable = true; + defaultEditor = true; + + settings = { + theme = "ayu_dark"; + editor = { + line-number = "relative"; + mouse = false; + color-modes = true; + auto-format = true; + completion-timeout = 5; + completion-replace = true; + preview-completion-insert = true; + scrolloff = 8; + cursorline = true; + auto-info = true; + rulers = [ 80 ]; + bufferline = "multiple"; + shell = [ "zsh" "-c" ]; + jump-label-alphabet = "asdfghjklqwertyuiopzxcvbnm"; + + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + + inline-diagnostics = { + cursor-line = "warning"; + other-lines = "disable"; + }; + + file-picker = { + hidden = false; + git-ignore = true; + git-global = true; + }; + + statusline = { + left = [ + "mode" + "file-base-name" + "version-control" + ]; + center = [ ]; + right = [ + "diagnostics" + "selections" + "position" + "file-encoding" + "file-type" + ]; + separator = "│"; + }; + + lsp = { + display-messages = true; + display-inlay-hints = true; + }; + + indent-guides = { + render = true; + character = "╎"; + skip-levels = 1; + }; + + soft-wrap = { + enable = true; + }; + + smart-tab = { + enable = true; + supersede-menu = true; + }; + }; + }; + + languages = { + language = [ + { + name = "python"; + language-servers = [ + "ty" + "ruff" + ]; + formatter = { + command = "ruff"; + args = [ + "format" + "-" + ]; + }; + auto-format = true; + } + { + name = "c"; + language-servers = [ "clangd" ]; + formatter = { + command = "clang-format"; + args = [ "--style=file" ]; + }; + auto-format = true; + } + { + name = "nix"; + language-servers = [ "nixd" ]; + formatter = { + command = "nixfmt"; + }; + auto-format = true; + } + ]; + + language-server = { + nixd = { + command = "nixd"; + }; + ruff = { + command = "ruff"; + }; + ty = { + command = "ty"; + args = [ "server" ]; + }; + clangd = { + command = "clangd"; + }; + }; + }; + }; + }; + }; +} diff --git a/modules/shell/zsh.nix b/modules/shell/zsh.nix index edc732c..0410e38 100644 --- a/modules/shell/zsh.nix +++ b/modules/shell/zsh.nix @@ -1,4 +1,10 @@ -{ config, lib, pkgs, userVars, ... }: +{ + config, + lib, + pkgs, + userVars, + ... +}: let cfg = config.dotfiles.zsh; @@ -73,7 +79,7 @@ in }; programs.starship = { - + enable = true; enableZshIntegration = true; @@ -139,17 +145,24 @@ in python = { style = "bold yellow"; - format = "[$symbol$version( \($virtualenv\))]($style) "; - symbol = "🐍 "; + format = "[$symbol( \($virtualenv\))]($style) "; + symbol = " "; detect_extensions = [ "py" ]; - detect_files = [ "pyproject.toml" "requirements.txt" "uv.lock" ]; + detect_files = [ + "pyproject.toml" + "requirements.txt" + "uv.lock" + ]; }; c = { style = "bold dimmed white"; format = "[$symbol($version(-$name))]($style) "; symbol = " "; - detect_extensions = [ "c" "h" ]; + detect_extensions = [ + "c" + "h" + ]; }; rust = { @@ -176,7 +189,7 @@ in package.disabled = true; battery.disabled = true; }; - + }; programs.zoxide = {