{ # inputs, pkgs , # config, # lib, ... }: { programs.helix = { extraPackages = with pkgs; [ rust-analyzer rustfmt nil nixfmt-rfc-style python311Packages.python-lsp-server clang-tools black emmet-ls vscode-langservers-extracted nodePackages."@astrojs/language-server" nodePackages.bash-language-server cmake-language-server cmake-format # inputs.snippets-ls taplo typst-lsp gopls # golangci-lint-langserver delve gleam ]; settings = { theme = "tokyonight"; editor = { line-number = "relative"; cursor-shape = { insert = "bar"; normal = "block"; select = "underline"; }; whitespace.render = { space = "all"; tab = "all"; newline = "none"; }; whitespace.characters = { space = "·"; nbsp = "⍽"; tab = "→"; newline = "⏎"; tabpad = "·"; # Tabs will look like "→···" (depending on tab width) }; cursorline = true; lsp.display-messages = true; }; }; languages = { language-server.emmet-ls = { command = "emmet-ls"; args = [ "--stdio" ]; }; language-server.astro-ls = { command = "astro-ls"; args = [ "--stdio" ]; config = { typescript.tsdk = "${pkgs.typescript}/lib/node_modules/typescript/lib"; environment = "node"; }; # language-server.snippets-html = { # command = "snippets-ls"; # args = [ # "-config" # config.xdg.configFile."helix/snippets/html.json".target # ]; # }; }; language-server.deno-lsp = { command = "${pkgs.deno}/bin/deno"; args = [ "lsp" ]; config.deno.enable = true; }; language = [ { name = "html"; language-servers = [ "vscode-html-language-server" "emmet-ls" # "snippets-html" ]; } { name = "astro"; scope = "source.astro"; injection-regex = "astro"; file-types = [ "astro" ]; roots = [ "package.json" "astro.config.mjs" ]; language-servers = [ "astro-ls" "emmet-ls" ]; auto-format = true; } { name = "nix"; auto-format = true; formatter = { command = "nixfmt"; args = [ "-" ]; }; } { name = "cpp"; auto-format = true; formatter.command = "clang-format"; } { name = "cmake"; auto-format = true; formatter = { command = "cmake-format"; args = [ "-" ]; }; } { name = "typescript"; shebangs = [ "deno" ]; roots = [ "deno.json" "deno.jsonc" "package.json" ]; auto-format = true; language-servers = [ "deno-lsp" ]; } ]; }; # end of languages }; # end of programs.helix # xdg.configFile = { # "helix/snippets/html.json" = mkIf cfg.enable { # source = jsonFormat.generate "html-snippets" { # "html doc" = { # isFileTemplate = true; # prefix = [ "!" ]; # body = [ # "" # "" # "
" # ''\t'' # ''\t