{ inputs, ... }: { flake.modules.homeManager.helix = { pkgs, ... }: let svelteLanguageServer = pkgs.svelte-language-server.overrideAttrs ( finalAttrs: _: { version = "0.18.3"; src = pkgs.fetchFromGitHub { owner = "sveltejs"; repo = "language-tools"; tag = "svelte-language-server@${finalAttrs.version}"; hash = "sha256-FTOkJPXbsG6R53yr4n0/IR2lzFCovrdV0+epOi07lBQ="; }; pnpmDeps = pkgs.fetchPnpmDeps { inherit (finalAttrs) pname version src pnpmWorkspaces ; pnpm = pkgs.pnpm_10; fetcherVersion = 3; hash = "sha256-fY3hrCkr/soJk1gp39/jec8lT2ZJI27xRBCZi006oWA="; }; } ); in { programs.helix = { enable = true; defaultEditor = true; package = inputs.helix.packages.${pkgs.stdenv.hostPlatform.system}.default; extraPackages = with pkgs; [ svelteLanguageServer nixd nixfmt oxfmt simple-completion-language-server rust-analyzer ]; settings = { theme = "kanagawa"; editor = { lsp = { auto-document-highlight = true; display-inlay-hints = true; }; rainbow-brackets = true; line-number = "relative"; cursorline = true; gutters = [ "code-action-hint" "diagnostics" "spacer" "line-numbers" "spacer" "diff" ]; color-modes = true; cursor-shape = { insert = "bar"; normal = "block"; select = "underline"; }; }; }; languages = { language-server.scls = { command = "simple-completion-language-server"; environment.SNIPPETS_PATH = "${pkgs.vimPlugins.friendly-snippets}/snippets"; }; language = [ { name = "svelte"; formatter = { command = "oxfmt"; args = [ "--stdin-filepath=%{buffer_name}" ]; }; auto-format = true; language-servers = [ "scls" "svelteserver" ]; } { name = "nix"; auto-format = true; } { name = "rust"; auto-format = true; } ]; }; }; }; }