{ pkgs, lib, ... }: { programs.helix = { enable = true; defaultEditor = false; settings = { # Let Stylix handle theming editor = { cursor-shape = { normal = "block"; insert = "bar"; select = "underline"; }; line-number = "relative"; bufferline = "multiple"; color-modes = true; cursorline = true; auto-save = { after-delay.enable = true; after-delay.timeout = 10000; }; auto-format = true; end-of-line-diagnostics = "hint"; inline-diagnostics.cursor-line = "hint"; lsp = { display-messages = true; display-inlay-hints = true; }; popup-border = "popup"; statusline.left = [ "mode" "spinner" "spacer" "version-control" "file-name" "diagnostics" "read-only-indicator" "file-modification-indicator" "spacer" ]; statusline.right = [ "workspace-diagnostics" "register" "position" "selections" "file-encoding" "file-type" ]; idle-timeout = 50; completion-timeout = 100; indent-guides = { render = true; character = "|"; skip-levels = 3; }; soft-wrap.enable = true; whitespace = { render = { space = "none"; tab = "all"; newline = "none"; }; characters = { nbsp = "·"; tab = "→"; }; }; }; }; languages = { language-server = { "bash-language-server" = { command = "${pkgs.bash-language-server}/bin/bash-language-server"; args = ["start"]; }; "superhtml" = { command = "${pkgs.superhtml}/bin/superhtml"; }; "vscode-css-languageserver" = { command = "${pkgs.vscode-css-languageserver}/bin/vscode-css-languageserver"; }; "rust-analyzer" = { command = "${pkgs.rust-analyzer}/bin/rust-analyzer"; }; "pyright" = { command = "${pkgs.pyright}/bin/pyright"; }; "nil" = { command = "${pkgs.nil}/bin/nil"; }; "texlab" = { command = "${pkgs.texlab}/bin/texlab"; }; texlab.config.texlab = { build = { onSave = true; forwardSearchAfter = true; }; chktext.onEdit = true; forwardSearch = { executable = "zathura"; args = ["--synctex-forward" "%l:1:%f" "%p"]; }; }; "marksman" = { command = "${pkgs.marksman}/bin/marksman"; }; }; language = [ { name = "bash"; language-servers = ["bash-language-server"]; auto-format = true; } { name = "html"; language-servers = ["superhtml"]; auto-format = true; } { name = "css"; language-servers = ["vscode-css-languageserver"]; auto-format = true; } { name = "rust"; language-servers = ["rust-analyzer"]; auto-format = true; } { name = "python"; language-servers = ["pyright"]; auto-format = true; } { name = "nix"; language-servers = ["nil"]; auto-format = true; } { name = "latex"; language-servers = ["texlab"]; auto-format = true; } { name = "markdown"; language-servers = ["marksman"]; auto-format = true; } ]; }; }; home.packages = with pkgs; [ zathura ripgrep fd bash-language-server superhtml vscode-css-languageserver rust-analyzer llvmPackages_latest.lldb pyright nil texlab marksman ]; }