{ unstable, ... }: { programs = { mcp = { enable = true; servers = { mcp-nixos = { command = "nix"; args = [ "run" "github:utensils/mcp-nixos" "--" ]; }; mcp-ctl = { command = "nix"; args = [ "run" "gitlab:fberto/llm-agent-tests?host=gitlab.cern.ch" ]; }; }; }; opencode = { enable = true; package = unstable.opencode; enableMcpIntegration = true; settings = { provider.ollama = { npm = "@ai-sdk/openai-compatible"; name = "Ollama (local)"; options.baseURL = "http://localhost:11434/v1"; models = { "mashriram/gemma3nTools:e4b".name = "gemma3nTools:e4b"; "mashriram/gemma3nTools:e2b".name = "gemma3nTools:e2b"; "devstral-small-2:24b".name = "devstral-small-2:24b"; "devstral-small-2:24b-instruct-2512-q8_0".name = "devstral-small-2:24b-instruct-2512-q8_0"; "deepseek-r1:14b".name = "deepseek-r1:14b"; "deepseek-r1:8b".name = "deepseek-r1:8b"; "gemma3n:e2b".name = "gemma3n:e2b"; "gemma3:latest".name = "gemma3:latest"; "qwen3:4b".name = "qwen3:4b"; "qwen3-vl:4b".name = "qwen3-vl:4b"; "qwen3-vl:8b".name = "qwen3-vl:8b"; "qwen3:14b".name = "qwen3:14b"; "qwen3:8b".name = "qwen3:8b"; "gemma3:12b".name = "gemma3:12b"; "gemma3n:e4b".name = "gemma3n:e4b"; "granite3.3:8b".name = "granite3.3:8b"; "glm-4.6:cloud".name = "glm-4.6:cloud"; }; }; tools = { bash = true; edit = true; write = true; read = true; grep = true; glob = true; list = true; patch = true; todowrite = true; todoread = true; webfetch = true; lsp = true; skill = true; question = true; }; lsp = { python = { command = [ "ruff" "server" ]; extensions = [ ".py" ]; }; }; }; }; }; }