Files
nixos/hosts/nb/modules/mcp-global.nix

59 lines
2.0 KiB
Nix

{ 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;
};
};
}