set up nix mcp server
This commit is contained in:
parent
0d2a3e26a8
commit
0d57fb08b1
5 changed files with 140 additions and 4 deletions
|
@ -2,10 +2,27 @@
|
|||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}: let
|
||||
pkgsRepositories = pkgs.nix-vscode-extensions.forVSCodeVersion config.programs.vscode.package.version;
|
||||
pkgsRepository = pkgsRepositories.open-vsx;
|
||||
|
||||
mcp-nixos = inputs.mcp-nixos.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||
|
||||
anyProfileHasMcpNixos = lib.any (
|
||||
profile:
|
||||
profile.extraExtensions.claudeDev.enable
|
||||
&& profile.extraExtensions.claudeDev.mcp.nixos.enable
|
||||
) (lib.attrValues config.programs.vscode.profiles);
|
||||
|
||||
mcpServersConfig = lib.mkMerge [
|
||||
(lib.mkIf anyProfileHasMcpNixos {
|
||||
nixos = {
|
||||
command = "${mcp-nixos}/bin/mcp-nixos";
|
||||
};
|
||||
})
|
||||
];
|
||||
in {
|
||||
options.programs.vscode.profiles = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({config, ...}: {
|
||||
|
@ -15,6 +32,12 @@ in {
|
|||
extension = lib.mkPackageOption pkgsRepository "claude-dev" {
|
||||
default = ["saoudrizwan" "claude-dev"];
|
||||
};
|
||||
|
||||
mcp = {
|
||||
nixos = {
|
||||
enable = lib.mkEnableOption "enable NixOS MCP server for Claude Dev";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
config = lib.mkIf config.extraExtensions.claudeDev.enable {
|
||||
|
@ -24,4 +47,17 @@ in {
|
|||
};
|
||||
}));
|
||||
};
|
||||
|
||||
config = lib.mkIf anyProfileHasMcpNixos {
|
||||
home.file."${config.xdg.configHome}/VSCodium/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json" = {
|
||||
text = builtins.toJSON {
|
||||
mcpServers = mcpServersConfig;
|
||||
};
|
||||
force = true;
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
mcp-nixos
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue