{ lib, config, pkgs, ... }: with lib; { options.helix = { fullInstall = mkOption { type = lib.types.nullOr lib.types.bool; default = false; }; }; config = { programs = { helix = mkMerge [{ enable = true; defaultEditor = true; settings = { theme = "dracula"; }; extraPackages = with pkgs;[ gcc ]; } (mkIf config.helix.fullInstall { extraPackages = with pkgs;[ #nix nixd nixpkgs-fmt #dotnet omnisharp-roslyn netcoredbg # rust rustfmt clippy rust-analyzer lldb #python ruff # shell shfmt bash-language-server fish-lsp # misc hyprls marksman # web superhtml biome ] ++ (with nodePackages;[ vscode-langservers-extracted typescript-language-server ]); languages = { language = [ { name = "bash"; formatter = { command = "shfmt"; }; } { name = "javascript"; language-servers = [ { name = "biome"; } { name = "typescript-language-server"; except-features = [ "format" ]; } ]; auto-format = true; formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.js" ]; }; } { name = "typescript"; language-servers = [ { name = "biome"; } { name = "typescript-language-server"; except-features = [ "format" ]; } ]; auto-format = true; formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.ts" ]; }; } { name = "jsx"; language-servers = [ { name = "biome"; } { name = "typescript-language-server"; except-features = [ "format" ]; } ]; auto-format = true; formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.jsx" ]; }; } { name = "tsx"; language-servers = [ { name = "biome"; } { name = "typescript-language-server"; except-features = [ "format" ]; } ]; auto-format = true; formatter = { command = "biome"; args = [ "format" "--stdin-file-path" "a.tsx" ]; }; } ]; }; })]; }; }; }