{ config, pkgs, ... }: { imports = [ ./binds.nix ./settings.nix ]; home = { sessionVariables.EDITOR = "hx"; packages = [ pkgs.wl-clipboard-rs pkgs.nil pkgs.vscode-langservers-extracted pkgs.nodePackages.typescript-language-server pkgs.emmet-language-server pkgs.jdt-language-server pkgs.tinymist pkgs.typstyle ]; }; programs.helix = { enable = true; defaultEditor = true; languages = { language-server = { "nu-builtin-lsp" = { command = "${pkgs.nushell}/bin/nu"; args = [ "--lsp" ]; }; "rust-analyzer" = { config = { check.command = "check"; completion.snippets.custom = { "pub fn" = { prefix = [ "pfn" "pubfn" ]; postfix = [ "pfn" ]; body = [ "pub fn $\{receiver\}() {" "\\t$1" "}" ]; scope = "type"; }; }; completion.termSearch.enable = true; diagnostics.enable = true; inlayHints = { bindingModeHints.enable = true; closureCaptureHints.enable = true; closureReturnTypeHints.enable = true; discriminantHints.enable = true; expressionAdjustmentHints = { hideOutsideUnsafe = true; }; lifetimeElisionHints.enable = "skip_trivial"; }; interpret.tests = true; lens = { references = { adt.enable = true; trait.enable = true; }; }; typing.autoClosingAngleBrackets.enable = true; }; }; "emmet-language-server" = { command = "emmet-language-server"; args = [ "--stdio" ]; }; "psalm" = { command = "psalm"; args = [ "--language-server" ]; }; "tinymist" = { config = { exportPdf = "onType"; formatterMode = "typstyle"; }; }; }; language = [ { name = "nu"; language-servers = [ "nu-builtin-lsp" ]; } { name = "php"; language-servers = [ "psalm" ]; } { name = "nix"; formatter = { command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt"; args = [ "--quiet" ]; }; auto-format = true; } { name = "html"; roots = [ ".git" ]; language-servers = [ "vscode-html-language-server" "emmet-language-server" ]; auto-format = false; } ]; }; }; }