diff --git a/users/modules/dev/ai/claude.nix b/users/modules/dev/ai/claude.nix index dbba961..8f3d00f 100644 --- a/users/modules/dev/ai/claude.nix +++ b/users/modules/dev/ai/claude.nix @@ -6,16 +6,23 @@ }: with lib; let cfg = config.home.dev.ai.claude; + jsonFormat = pkgs.formats.json {}; in { - options.home.dev.ai.claude.enable = mkEnableOption "Enables Claude-related packages"; + options.home.dev.ai.claude = { + enable = mkEnableOption "Enables Claude-related packages"; + mcpServers = mkOption { + inherit (jsonFormat) type; + default = {}; + }; + }; config = mkIf cfg.enable { home.packages = let claude-jj = pkgs.writeShellScriptBin "claude-jj" '' - ${pkgs.claude-code}/bin/claude --append-system-prompt 'CRITICAL: This repository uses Jujutsu (jj), NOT git. Never use git commands. Use jj equivalents. See CLAUDE.md.' "$@" + ${pkgs.claude-code}/bin/claude --append-system-prompt 'CRITICAL: This repository uses Jujutsu (jj), NOT git. Never use git commands. Use jj equivalents.' "$@" ''; - in [claude-jj]; + in [claude-jj pkgs.sox]; programs.claude-code = { - inherit (cfg) enable; + inherit (cfg) enable mcpServers; }; }; } diff --git a/users/modules/dev/ai/default.nix b/users/modules/dev/ai/default.nix index 25c0d3e..bb733f7 100644 --- a/users/modules/dev/ai/default.nix +++ b/users/modules/dev/ai/default.nix @@ -6,18 +6,34 @@ }: with lib; let cfg = config.home.dev.ai; + jsonFormat = pkgs.formats.json {}; in { imports = [ ./claude.nix ./ollama.nix ]; - options.home.dev.ai.enable = mkEnableOption "Enables AI features"; - config.home = mkIf cfg.enable { - dev.ai = { - claude.enable = mkDefault cfg.enable; - ollama.enable = mkDefault cfg.enable; + options.home.dev.ai = { + enable = mkEnableOption "Enables AI features"; + mcpServers = mkOption { + inherit (jsonFormat) type; + default = {}; + }; + }; + config = { + home = mkIf cfg.enable { + dev.ai = { + claude = { + enable = mkDefault cfg.enable; + mcpServers = mkDefault cfg.mcpServers; + }; + ollama.enable = mkDefault cfg.enable; + }; + packages = [pkgs.lmstudio]; + }; + programs.mcp = mkIf (cfg.mcpServers != {}) { + enable = true; + servers = cfg.mcpServers; }; - packages = [pkgs.lmstudio]; }; }