feat: add MCP global configuration module, manage Brave Search API key, and set up systemd service for deployment
This commit is contained in:
58
hosts/nb/modules/mcp-global.nix
Normal file
58
hosts/nb/modules/mcp-global.nix
Normal file
@@ -0,0 +1,58 @@
|
||||
{ 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;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user