统一的Nix flake配置用于AI工具,包括Claude Code、OpenCode、MCP服务器和AI代理。
programs.{opencode,claude-code}.commands选项在你的flake.nix中添加:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
ai-tools.url = "github:clempat/ai-tools-flake";
};
outputs = { nixpkgs, ai-tools, ... }: {
# 你的配置
};
}
{
imports = [ ai-tools.homeManagerModules.default ];
programs.ai-tools = {
enable = true;
# 使用默认的MCP、代理和内存
# 默认的extraPackages包含gh和ripgrep
# 自动通过上游选项安装claude-flow命令
};
}
{ config, ... }:
let
ai-tools-flake = inputs.ai-tools;
in {
imports = [ ai-tools-flake.homeManagerModules.default ];
programs.ai-tools = {
enable = true;
# 合并默认值
mcpServers = ai-tools-flake.lib.defaultConfig.mcpServers // {
# 启用特定服务器
github.enable = true;
context7.enable = true;
# 添加自定义服务器
myserver = {
enable = true;
type = "http";
url = "http://localhost:3000/mcp";
};
};
# 使用默认代理或覆盖
agents = ai-tools-flake.lib.defaultConfig.agents // {
# 禁用一个代理
nixos.disable = true;
# 添加自定义代理
my-agent = {
content = ./my-agent.md;
description = "我的自定义代理";
tools = [ "Read" "Write" ];
model = "sonnet";
};
};
# 使用默认内存或提供自定义
memory = ai-tools-flake.lib.defaultConfig.memory;
# 或者
# memory = ./my-memory.md;
# 覆盖默认的额外包(gh, ripgrep)
extraPackages = with pkgs; [
gh # GitHub CLI用于ticket-driven-developer代理
jq # JSON处理器用于数据操作
ripgrep # 快速搜索工具
nodejs # 用于基于npx的MCP服务器如playwright
];
enableClaudeCode = true;
enableOpencode = true;
enableMcphub = false;
# Claude-flow命令(默认启用)
enableClaudeFlowCommands = true;
# 可选:使用自定义命令目录
# commandsDir = ./my-commands;
};
# 手动安装Claude技能(直到模块支持它们)
home.file.".claude/skills/lint-with-conform".source =
"${ai-tools-flake}/config/skills/lint-with-conform";
}
该flake包括9个预配置的工作流命令,这些命令通过上游home-manager选项自动配置:
programs.opencode.commands用于OpenCodeprograms.claude-code.commands用于Claude桌面可用命令:
要禁用自动安装:
programs.ai-tools = {
enable = true;
enableClaudeFlowCommands = false;
};
要使用自定义命令目录:
programs.ai-tools = {
enable = true;
commandsDir = ./my-custom-commands;
};
注意:用户仍然可以直接使用上游选项添加自己的命令:
programs.opencode.commands = ./my-extra-commands;
programs.claude-code.commands = ./my-extra-commands;
{
nixpkgs.overlays = [ ai-tools.overlays.default ];
# 现在opencode包装器在pkgs中可用
home.packages = [ pkgs.opencode ];
}
{
home.packages = [
ai-tools.packages.${system}.spec-kit
];
}
ai-tools-flake/
├── flake.nix # 主flake定义
├── modules/
│ └── ai-tools.nix # Home-manager模块
├── config/ # 所有配置
│ ├── agents.nix # 默认代理配置
│ ├── mcps.nix # 默认MCP服务器配置
│ ├── memory.md # 默认内存/规则
│ ├── agents/ # 代理内容markdown文件
│ └── skills/ # Claude技能
│ ├── lint-with-conform/
│ ├── nixos-advisor/
│ └── nixos-command-not-found/
├── commands/ # Claude-flow工作流命令
│ ├── commit.md
│ ├── create_plan.md
│ ├── create_spec.md
│ ├── create_ticket.md
│ ├── create_worktree.md
│ ├── implement_plan.md
│ ├── research_codebase.md
│ ├── research_confluence.md
│ └── validate_plan.md
├── pkgs/
│ └── spec-kit.nix # Spec-kit包
└── overlays/
└── default.nix # OpenCode包装器overlay
ghCLI)MIT