143 lines
3.8 KiB
Nix
143 lines
3.8 KiB
Nix
{
|
|
description = "Home Lab MCP Integration - Guile MCP Server and VS Code Extension";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
};
|
|
|
|
outputs = {
|
|
self,
|
|
nixpkgs,
|
|
flake-utils,
|
|
}:
|
|
flake-utils.lib.eachDefaultSystem (system: let
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
in {
|
|
# Development shell
|
|
devShells.default = pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
# Guile and Scheme ecosystem
|
|
guile
|
|
guile-json
|
|
guile-ssh
|
|
guile-websocket
|
|
|
|
# Node.js for VS Code extension development
|
|
nodejs
|
|
nodePackages.npm
|
|
nodePackages.typescript
|
|
|
|
# Development and testing tools
|
|
git
|
|
curl
|
|
jq
|
|
netcat
|
|
|
|
# Documentation and analysis
|
|
pandoc
|
|
graphviz
|
|
|
|
# Optional: VS Code for development
|
|
# vscode
|
|
];
|
|
|
|
shellHook = ''
|
|
echo "🏠 Home Lab MCP Integration Development Environment"
|
|
echo ""
|
|
echo "Available tools:"
|
|
echo " • Guile with JSON, SSH, WebSocket support"
|
|
echo " • Node.js with TypeScript and VS Code tools"
|
|
echo " • Development utilities: git, curl, jq, netcat"
|
|
echo ""
|
|
echo "Quick start:"
|
|
echo " 1. npm install # Install extension dependencies"
|
|
echo " 2. npm run compile # Compile TypeScript extension"
|
|
echo " 3. ./setup-mcp-integration.sh # Run full setup"
|
|
echo ""
|
|
echo "MCP Server: ./guile-mcp-server.scm"
|
|
echo "VS Code Extension: ./vscode-homelab-extension.ts"
|
|
echo ""
|
|
'';
|
|
|
|
# Environment variables
|
|
GUILE_LOAD_PATH = "${pkgs.guile-json}/share/guile/site/3.0:${pkgs.guile-ssh}/share/guile/site/3.0";
|
|
NODE_PATH = "${pkgs.nodePackages.typescript}/lib/node_modules";
|
|
};
|
|
|
|
# Packages
|
|
packages = {
|
|
# Lab tool package
|
|
lab = (pkgs.callPackage ./lab-tools.nix {}).lab;
|
|
|
|
# Guile MCP Server package
|
|
guile-mcp-server = pkgs.stdenv.mkDerivation {
|
|
pname = "guile-mcp-server";
|
|
version = "0.1.0";
|
|
|
|
src = ./.;
|
|
|
|
buildInputs = with pkgs; [
|
|
guile
|
|
guile-json
|
|
guile-ssh
|
|
];
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp guile-mcp-server.scm $out/bin/guile-mcp-server
|
|
chmod +x $out/bin/guile-mcp-server
|
|
'';
|
|
|
|
meta = with pkgs.lib; {
|
|
description = "Home Lab MCP Server implemented in Guile Scheme";
|
|
license = licenses.mit;
|
|
maintainers = [];
|
|
platforms = platforms.unix;
|
|
};
|
|
};
|
|
|
|
# VS Code Extension package
|
|
vscode-homelab-extension = pkgs.stdenv.mkDerivation {
|
|
pname = "vscode-homelab-extension";
|
|
version = "0.1.0";
|
|
|
|
src = ./.;
|
|
|
|
buildInputs = with pkgs; [
|
|
nodejs
|
|
npm
|
|
];
|
|
|
|
buildPhase = ''
|
|
npm install
|
|
npm run compile
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -r . $out/
|
|
'';
|
|
|
|
meta = with pkgs.lib; {
|
|
description = "VS Code extension for Home Lab MCP integration";
|
|
license = licenses.mit;
|
|
maintainers = [];
|
|
};
|
|
};
|
|
};
|
|
|
|
# Default package
|
|
defaultPackage = self.packages.${system}.guile-mcp-server;
|
|
|
|
# Apps for easy running
|
|
apps = {
|
|
mcp-server = {
|
|
type = "app";
|
|
program = "${self.packages.${system}.guile-mcp-server}/bin/guile-mcp-server";
|
|
};
|
|
};
|
|
|
|
defaultApp = self.apps.${system}.mcp-server;
|
|
});
|
|
}
|