{ config, lib, pkgs, ... }: let # Fetch MCP servers library mcpServersNix = import (builtins.fetchTarball { url = "https://github.com/dpolakovics/mcp-servers-nix/archive/e068d6aa5d9972987aa8aed198b7bb763b1af161.tar.gz"; sha256 = "sha256-yWFrZG9UryIf3EW8BoYNqRU61hL5iyqYrEOX0wXWuhk="; }) { inherit pkgs; }; # Build MCP configuration mcpJsonConfig = mcpServersNix.lib.mkConfig pkgs { programs = { fetch.enable = true; brave-search = { enable = true; envFile = config.sops.secrets.mcp-brave-env.path; # envFile = "/run/secrets/mcp-brave-env"; }; puppeteer.enable = true; # memory.enable = true; sequential-thinking.enable = true; }; settings = { mcpServers.nixos = { command = "nix"; args = [ "run" "github:utensils/mcp-nixos" "--" ]; }; }; }; setupMcpConfigDominik = pkgs.writeShellScript "setup" '' ${pkgs.coreutils-full}/bin/mkdir -p /home/dominik/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings if [ -f /home/dominik/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json ]; then echo "Removing old mcp.json…" rm /home/dominik/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json fi ${pkgs.coreutils-full}/bin/ln -s ${builtins.toString mcpJsonConfig} \ /home/dominik/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json ''; in { # Manage Brave Search API key file via sops sops.secrets.mcp-brave-env = { owner = "dominik"; }; # Systemd service to deploy to VSCode globalStorage systemd.services."setup-roo-mcp-config-dominik" = { description = "Deploy Roo MCP config for dominik"; wantedBy = [ "multi-user.target" ]; after = [ "nss-user-lookup.target" ]; serviceConfig = { Type = "oneshot"; RemainAfterExit = true; ExecStart = setupMcpConfigDominik; }; }; }