with import { }; let # 1. Import mcp-servers-nix (classic default.nix) from GitHub. # This provides `mcpServers.lib.mkConfig` and the individual server packages. mcpServers = import (builtins.fetchTarball { url = "https://github.com/natsukium/mcp-servers-nix/archive/refs/heads/main.tar.gz"; # Optionally pin with sha256 once known. }) { inherit pkgs; }; # 3. Build the JSON configuration string with exactly fetch, memory, and brave-search. # We assume you store your Brave Search API key in "~/.config/mcp-servers/brave.env" mcpPrograms = { # fetch.enable = true; # filesystem = { # enable = true; # args = [ "/home/${builtins.getEnv "USER"}/projects/cloonar/cloonar-nixos/" ]; # }; # git = { # enable = true; # args = [ "/home/${builtins.getEnv "USER"}/projects/cloonar/cloonar-nixos/" ]; # }; sequential-thinking.enable = true; # memory.enable = true; "brave-search" = { enable = true; envFile = "/home/${builtins.getEnv "USER"}/.config/mcp-servers/brave.env"; }; }; customServers = { nixos = { command = "nix"; args = ["run" "github:utensils/mcp-nixos" "--"]; }; }; rooCodeMcp = mcpServers.lib.mkConfig pkgs { programs = mcpPrograms; settings = { mcpServers = customServers; }; }; vscodeMcp = mcpServers.lib.mkConfig pkgs { flavor = "vscode-workspace"; programs = mcpPrograms; settings = { servers = customServers; }; }; in pkgs.mkShell { # 4. Bring in 'jq' so you can inspect the JSON if needed. buildInputs = [ pkgs.jq ]; # 5. On shell entry, write out 'claude_desktop_config.json' in the project root. shellHook = '' if [ -f ./.roo/mcp.json ]; then echo "Removing old mcp.json…" rm ./.roo/mcp.json fi mkdir -p ./.roo echo "Generating roo code mcp.json…" ln -s ${builtins.toString rooCodeMcp} ./.roo/mcp.json echo "✅ mcp.json has been created." if [ -f ./.vscode/mcp.json ]; then echo "Removing old mcp.json…" rm ./.vscode/mcp.json fi mkdir -p ./.vscode echo "Generating vscode mcp.json…" ln -s ${builtins.toString vscodeMcp} ./.vscode/mcp.json echo "✅ mcp.json has been created." ''; }