{ pkgs, ... }: { programs.helix = { enable = true; defaultEditor = false; settings = { theme = "ayu_mirage"; 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 "bash-language-server" = { command = "${pkgs.bash-language-server}/bin/bash-language-server"; args = [ "start" ]; }; # HTML "superhtml" = { command = "${pkgs.superhtml}/bin/superhtml"; }; # CSS "vscode-css-languageserver" = { command = "${pkgs.vscode-css-languageserver}/bin/vscode-css-languageserver"; }; # Rust "rust-analyzer" = { command = "${pkgs.rust-analyzer}/bin/rust-analyzer"; }; # Python "pyright" = { command = "${pkgs.pyright}/bin/pyright"; }; # Nix "nil" = { command = "${pkgs.nil}/bin/nil"; }; # LaTeX "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" ]; }; }; # Markdown "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 # LSP for Bash superhtml # LSP for HTML vscode-css-languageserver # LSP for CSS rust-analyzer # Rust LSP llvmPackages_latest.lldb # lldb-dap for Rust pyright # Python LSP nil # Nix LSP texlab # LaTeX LSP marksman # Markdown LSP ]; }