Nix 打包
- 原始链接:https://github.com/openclaw/nix-openclaw
- 来源章节:7. 官方仓库与生态仓库
- 来源小节:无
- 抓取方式:jina:https://r.jina.ai/http://github.com/openclaw/nix-openclaw
- 抓取时间:2026-04-05 13:47:10
- 状态:ok
中文内容
nix-openclaw,nix 的 OpenClaw 软件包,下载nix-openclaw的源码_GitHub_酷徒· GitHub
导航菜单
切换导航
外观设置
平台
人工智能代码创建 * GitHub Copilot 使用 AI 编写更好的代码 * GitHub Spark 构建和部署智能应用程序 * GitHub 模型管理和比较提示 * MCP注册中心新增集成外部工具
开发人员工作流程 * 操作自动化任何工作流程 * Codespaces 即时开发环境 * 问题计划和跟踪工作 * Code Review 管理代码变更
应用程序安全 * GitHub Advanced Security 查找并修复漏洞 * 代码安全性 在构建时保护您的代码 * 秘密保护,防患于未然
探索 * 为什么选择 GitHub * 文档 * 博客 * 变更日志 * 市场
解决方案
按公司规模 * 企业 * 中小型团队 * 初创公司 * 非营利组织
按使用案例 * 应用现代化 * DevSecOps * DevOps * CI/CD * 查看所有用例
按行业分类 * 医疗保健 * 金融服务 * 制造 * 政府 * 查看所有行业
资源
按主题探索 * 人工智能 * 软件开发 * DevOps * 安全 * 查看所有主题
按类型探索 * 客户故事 * 活动和网络研讨会 * 电子书和报告 * 业务洞察 * GitHub 技能
支持与服务 * 文档 * 客户支持 * 社区论坛 * 信任中心 * 合作伙伴
开源
社区 * GitHub 赞助基金开源开发者
节目 * 安全实验室 * 维护者社区 * 加速器 * GitHub 之星 * 存档程序
企业
企业解决方案 * 企业平台AI驱动的开发者平台
可用的附加组件 * GitHub Advanced Security 企业级安全功能 * Copilot for Business 企业级人工智能功能 * 高级支持企业级24/7支持
搜索或跳转到...
搜索代码、存储库、用户、问题、拉取请求...
搜索
清除
提供反馈
我们会阅读每一条反馈,并非常认真地对待您的意见。
- 附上我的电子邮件地址,以便可以联系我
取消 提交反馈
保存的搜索
使用保存的搜索更快地过滤结果
名称
查询
要查看所有可用的限定符,请参阅我们的文档。
取消 创建已保存的搜索
外观设置
重设焦点
您使用另一个选项卡或窗口登录。 重新加载 刷新您的会话。您在另一个选项卡或窗口中退出。 重新加载 刷新您的会话。您在另一个选项卡或窗口上切换了帐户。 重新加载 刷新您的会话。关闭警报
{{消息}}
openclaw/**nix-openclaw**公共
-
呃哦!
加载时出错。 请重新加载此页面。
附加导航选项
openclaw/nix-openclaw
主要
转到文件
代码
打开更多操作菜单
文件夹和文件
| 名称 | 名称 | 最后提交消息 | 最后提交日期 |
|---|---|---|---|
| ## 最新提交 ## 历史记录 1,176 次提交 1,176 次提交 | |||
| .github/workflows | .github/workflows | ||
| 文档 | 文档 | ||
| examples/hello-world-plugin | examples/hello-world-plugin | ||
| nix | nix | ||
| [脚本](http://github.com/openclaw/nix-opencl |
aw/tree/main/scripts "脚本") | 脚本 | | | | templates/agent-first | templates/agent-first | | | | .gitignore | .gitignore | | | | AGENTS.md | AGENTS.md | | | | 许可证 | 许可证 | | | | README.md | README.md | | | | [flake.lock](http://github.com/openclaw/nix-openclaw/blob/mai
n/flake.lock "flake.lock") | n/flake.lock "flake.lock") | flake.lock | | | | flake.nix | flake.nix | | | | garnix.yaml | garnix.yaml | | | |查看所有文件 |
存储库文件导航
尼克斯张开爪
声明式 OpenClaw。默认防弹。
macOS + Linux(无头)。 Windows 目前超出了范围。
有问题吗?加入 OpenClaw Discord 并在 #golden-path-deployments 中提问: https://discord.com/channels/1456350064065904867/1457003026412736537
贡献(首先阅读此内容)
我们现在 不接受 PR。并不是因为我们不重视您的帮助——恰恰相反。这是关键的基础设施,仍然稳定,异步 PR 审核太慢。
**仅工作流程:**描述您的问题并与 #golden-path-deployments 中的 Discord 上的维护人员(人与人)交谈: https://discord.com/channels/1456350064065904867/1457003026412736537
如果您没有被列为维护者(请参阅 AGENTS.md#maintainers 或 https://github.com/orgs/openclaw/people),不要打开 PR。它将被拒绝,您的用户将会感到失望 - 请检查 Discord。
目录
黄金之路
应该有一种(最好只有一种)明显的部署方式。
选择一条黄金路径,然后按照文档操作:
你得到什么
我:“我的屏幕上有什么?”
机器人:*截取屏幕截图,进行描述*
我:“演奏一些爵士乐”
机器人:*打开 Spotify,播放爵士乐*
我:“转录此语音记录”
机器人:*运行耳语,向您发送文本*你与 Telegram 交谈,你的机器就可以做事。
一片片,一切正常。 网关+工具无处不在; macOS 上的 macOS 应用程序。
**插件是独立的。**每个插件都在 Nix 中声明其 CLI 工具。启用它后,构建和连接会自动发生。
防弹。 Nix 锁定每个依赖项。没有版本漂移,没有惊喜。 “home-manager switch”用于更新,“home-manager Generation”用于立即回滚。
要求
- macOS(Apple Silicon 或 Intel)或 Linux (x86_64)
- Determinate Nix 安装在您的计算机上
就是这样。快速入门将指导您完成其他所有事情。
还没有 Nix? 按照确定的 Nix 安装指南进行操作,然后返回此处。
为什么是尼克斯?
您之前可能已经安装过工具。 Homebrew、pip、npm - 它们会一直工作,直到不再工作为止。
你今天处理的事情:
- 更新一件事,破坏另一件事(“但昨天还有效”)
- macOS 升级后重新安装所有内容
- 共享设置时“适用于我的机器”
- 没有简单的方法来撤消错误的更新
Nix 为您提供什么:
- 每个依赖项都固定到确切的版本。永远。
- 更新破坏了什么?
home-manager switch --rollback- 30 秒后返回。 - 共享您的配置文件,在另一台计算机上获得完全相同的设置。
- 插件可以正常工作。 添加 GitHub URL,运行一个命令,完成。 Nix 处理构建、依赖关系和连接。
- 工具不会污染您的系统——它们是孤立存在的。
你不需要深入了解 Nix。你描述你想要什么,尼克斯就会弄清楚如何构建它。
Nix 是一个声明式包管理器。您无需运行命令来安装东西,而是编写一个配置文件,其中显示“我想要这些版本的这些工具”。 Nix 读取该文件并在“/nix/store”中构建所有内容 - 与您的系统隔离。
散列魔法: Nix 中的每个包都由其所有输入的加密散列来标识 - 源代码、依赖项、构建标志等等。改变任何东西,得到不同的哈希值。这意味着:
- 具有相同哈希值的两台机器具有_相同_版本。逐字节。
- 旧版本仍然存在(不同的哈希 = 不同的路径)。没有任何内容被覆盖。
- 回滚是即时的 - 只需指向旧的哈希值。
您将看到的关键术语:
- Flake:一个配置文件(
flake.nix),用于固定所有依赖项。想想“package-lock.json”,但适用于整个系统。 - 家庭管理器:通过 Nix 管理您的用户配置(点文件、应用程序、服务)。
home-manager switch:应用您的配置的命令。进行任何更改后运行它。
快速入门
选项 1:让您的代理进行设置(推荐)
复制整个块并将其粘贴到 Claude、Cursor 或您喜欢的 AI 助手中:
我想在我的机器(macOS 或 Linux)上设置 nix-openclaw。
存储库:github:openclaw/nix-openclaw
nix-openclaw 是什么:
- OpenClaw(AI助手网关)的含电池Nix包
- 到处安装网关+工具; macOS 应用程序仅在 macOS 上运行
- 在 macOS 上作为 launchd 服务运行,在 Linux 上作为 systemd 用户服务运行
我需要你做什么:
1.检查是否安装Determerate Nix(如果没有安装)
2. 使用 templates/agent-first/flake.nix 在 ~/code/openclaw-local 创建本地 flake
3. 在配置旁边创建一个文档目录(例如 ~/code/openclaw-local/documents),其中包含 AGENTS.md、SOUL.md、TOOLS.md(可选:IDENTITY.md、USER.md、LORE.md、HEARTBEAT.md、PROMPTING-EXAMPLES.md)
- 如果 ~/.openclaw/workspace 已经有这些文件,请首先将它们采用到文档目录中(使用取消引用符号链接的 copy/rsync,例如 `cp -L`)
4. 帮我创建一个 Telegram 机器人 (@BotFather) 并获取我的聊天 ID (@userinfobot)
5. 设置秘密(bot 令牌、Anthropic 密钥)- ~/.secrets/ 中的纯文件即可
6.填写模板占位符并运行home-manager switch
7. 验证:服务正在运行,机器人响应消息
我的设置:
- 操作系统:[macOS / Linux]
- CPU:[arm64 / x86_64]
- 系统:[aarch64-darwin / x86_64-linux]
- 家庭管理器配置名称:[填写或“我还没有家庭管理器”]
请参考存储库中的 README 和 templates/agent-first/flake.nix 以获取模块选项。您的代理将安装 Nix、创建您的配置并运行 OpenClaw。你只需回答它的问题。
接下来会发生什么:
- 您的代理设置一切并运行“home-manager switch”
- 您第一次向 Telegram 机器人发送消息
- OpenClaw 运行它的 引导仪式 - 它会问你一些有趣的问题:“我是谁?我是什么?你是谁?” - 了解它的身份和你的身份
- 命名并自我介绍后,引导程序就完成了。你已经启动并运行了。
选项 2:手动设置
macOS(家庭管理器 + launchd)
1.安装Determinenix。 2. 创建本地配置:
未定义的shell mkdir -p ~/code/openclaw-local && cd ~/code/openclaw-local nix flake init -t github:openclaw/nix-openclaw#agent-first 未定义
-
编辑
flake.nix占位符:system=aarch64-darwin(Apple Silicon)home.username和home.homeDirectoryprograms.openclaw.documents和AGENTS.md、SOUL.md、TOOLS.md(可选:IDENTITY.md、USER.md、LORE.md、HEARTBEAT.md、PROMPTING-EXAMPLES.md)- 提供商秘密(Telegram/Discord 令牌、Anthropic API 密钥)
-
申请:
未定义的shell 家庭管理员开关 --flake .#<用户> 未定义
- 验证:
未定义的shell launchctl 打印 gui/$UID/com.steipete.openclaw.gateway | grep 状态 未定义
Linux(无头+ systemd 用户服务)
1.安装Determinenix。 2. 创建本地配置:
未定义的shell mkdir -p ~/code/openclaw-local && cd ~/code/openclaw-local nix flake init -t github:openclaw/nix-openclaw#agent-first 未定义
-
编辑
flake.nix占位符:系统=x86_64-linuxhome.username和home.homeDirectory(例如,/home/<user>)programs.openclaw.documents和AGENTS.md、SOUL.md、TOOLS.md(可选:IDENTITY.md、USER.md、LORE.md、HEARTBEAT.md、PROMPTING-EXAMPLES.md)- 提供商秘密(Telegram/Discord 令牌、Anthropic API 密钥)
-
申请:
未定义的shell 家庭管理员开关 --flake .#<用户> 未定义
- 验证:
未定义的shell systemctl --用户状态 openclaw-gateway Journalctl --user -u openclaw-gateway -f 未定义
它是如何工作的
你(Telegram/Discord)-->网关-->工具-->你的机器做事网关:大脑。在您的计算机上运行的服务,用于接收消息并决定要做什么。在 macOS 上由 launchd 管理,在 Linux 上由 systemd 用户服务管理。
插件:包含两个内容的捆绑包:
- CLI 工具 - 执行操作的实际程序(截屏、控制 Spotify、转录音频)
- 技能 - 教 AI 如何使用这些工具的 Markdown 文件
当您启用插件时,Nix 会自动安装工具并将技能连接到 OpenClaw - 网关了解它可以做什么。
技能:人工智能的说明。技能文件显示“当用户想要 X 时,运行此命令”。人工智能会阅读这些内容来了解它能做什么。
在引擎盖下 当您运行“home-manager switch”时:
-
Nix 读取您的
flake.nix并解析所有插件源(GitHub 存储库、本地路径) -
对于每个插件,Nix 都会查找“openclawPlugin”输出,其中声明:
- 要安装哪些 CLI 软件包
- 复制哪些技能文件
- 需要什么环境变量
-
工具进入您的 PATH,技能符号链接到
~/.openclaw/workspace/skills/ -
创建/更新 launchd (macOS) 或 systemd 用户服务 (Linux) 以运行网关
-
网关启动,加载技能,连接到您的提供商
所有状态都位于“~/.openclaw/”中。日志位于“/tmp/openclaw/openclaw-gateway.log”。
插件
注意: 首先完成快速入门 才能运行 OpenClaw。然后回到这里添加插件。
插件扩展了 OpenClaw 的功能。每个插件都捆绑了工具并教人工智能如何使用它们。
捆绑插件
这些船带有 nix-openclaw。目录真实来源:nix/modules/home-manager/openclaw/plugin-catalog.nix。在您的配置中切换它们:
未定义尼克斯 programs.openclaw.bundledPlugins = { 总结.启用=真; # 总结网页、PDF、视频 peekaboo.enable = true; # 截图 poltergeist.enable = false; # 控制你的 macOS 用户界面 sag.enable = false; # 文本转语音 camsnap.enable = false; # 相机快照 gogcli.enable = false; # 谷歌日历 goplaces.enable = true; # Google 地方信息 API 鸟.enable = false; # 推特/X sonoscli.enable = false; # 索诺斯控制 imsg.enable = false; # 短信 };
捆绑插件的可选配置
programs.openclaw.bundledPlugins.goplaces = { 启用=真; config.env.GOOGLE_PLACES_API_KEY = "/run/agenix/google-places-api-key"; }; 不明确的
| 插件 | 它有什么作用 |
|---|---|
总结 | 总结 URL、PDF、YouTube 视频 |
| '躲猫猫' | 屏幕截图 |
恶作剧鬼 | 点击、输入、控制 macOS UI |
下垂 | 文字转语音 |
摄像头 | 从连接的相机拍摄照片 |
gogcli | 谷歌日历集成 |
去地方 | Google Places API(新)CLI |
鸟 | Twitter/X 集成 |
sonoscli | 控制 Sonos 扬声器 |
imsg | 发送/读取 iMessages |
添加社区插件
告诉您的代理:“从 github 添加插件:owner/repo-name”
或者手动将其添加到您的配置中:
未定义尼克斯 自定义插件 = [ { source = "github:owner/repo-name"; } ]; 未定义
然后运行“home-manager switch”进行安装。
带有配置的插件
有些插件需要设置(身份验证文件、首选项)。这是一个简化的示例:
未定义尼克斯
示例:padel 法庭预订插件(为了说明而简化)
自定义插件 = [ { 来源=“github:示例/padel-cli”; 配置={ 环境={ PADEL_AUTH_FILE = "~/.secrets/padel-auth"; # 你的登录令牌所在的位置 }; 设置={ default_city = "巴塞罗那"; Preferred_times = [ "18:00" "20:00" ]; }; }; } ]; 未定义
config.env- 插件所需的秘密/身份验证文件的路径config.settings- 首选项(渲染为插件的config.json)
对于插件开发者 想让您的工具作为 OpenClaw 插件使用吗?这是合同。
最小结构:
你的插件/
flake.nix # 声明插件
技能/
你的技能/
SKILL.md # AI 说明你的 flake.nix 必须导出 openclawPlugin:
未定义尼克斯 { 输出 = { self, nixpkgs, ... }: 让 pkgs = import nixpkgs { system =builtins.currentSystem; }; 在{ openclaw插件 = { 名称 =“你好世界”; 技能 = [ ./skills/hello-world ]; 包= [ pkgs.hello ]; # 要安装的 CLI 工具 需求={ 状态目录 = []; # 要创建的目录(相对于~) 所需环境 = []; # 需要的环境变量 }; }; }; } 未定义
你的“SKILL.md”教授人工智能:
未定义MD
名称:你好世界 描述:打印 hello world。
使用 hello CLI 打印问候语。
未定义
有关完整的工作示例,请参阅“examples/hello-world-plugin”。
完整插件创作提示 - 将其粘贴到您的 AI 代理中以制作任何 repo nix-openclaw-native:
目标:使这个仓库成为具有标准合约的 nix-openclaw-native 插件。
实施合同:
1) 在 flake.nix 中添加 openclawPlugin 输出:
- 姓名
- 技能(SKILL.md 目录的路径)
- 包(要放在 PATH 上的 CLI 包)
- 需求(stateDirs + requiredEnv)
示例:
openclaw插件 = {
名称 =“我的插件”;
技能 = [ ./skills/my-plugin ];
包 = [ self.packages.${system}.default ];
需求={
stateDirs = [“.config/my-plugin”];
requiredEnv = [“MYPLUGIN_AUTH_FILE”];
};
};
2) 使 CLI 通过 env 显式配置(没有神奇的默认值):
- 支持身份验证文件环境(例如,MYPLUGIN_AUTH_FILE)
- 尊重 XDG_CONFIG_HOME 或特定于插件的配置目录环境
3)在插件仓库中提供AGENTS.md:
- 旋钮+数值的简单英语解释
- 仅通用占位符(没有真正的秘密)
- 解释凭证所在的位置(例如 /run/agenix/...)
4) 更新 SKILL.md 以通过其路径名称调用 CLI。
标准插件配置形状(Nix 原生,无 JSON 字符串):
插件=[
{
来源=“github:所有者/我的插件”;
配置={
环境={
MYPLUGIN_AUTH_FILE = "/run/agenix/myplugin-auth";
};
设置={
名称 =“EXAMPLE_NAME”;
启用=真;
重试= 3;
标签= [“阿尔法”“贝塔”];
窗口={开始=“08:00”;结束=“18:00”; };
选项={模式=“快速”;级别=2; };
};
};
}
];
主机将使用的配置标志:
- `config.env` 用于所需的环境变量(例如 MYPLUGIN_AUTH_FILE)
- 用于键入配置键的“config.settings”(呈现到第一个 stateDir 中的 config.json)
CI注释:
- 如果存储库使用 Garnix,请将插件构建添加到其“garnix.yaml”(或等效项)中,以便 CI 验证它。
原因:显式、最小化、快速失败、无内联 JSON 字符串。
可交付成果:薄片输出、环境覆盖、AGENTS.md、技能更新。配置
注意: 您可能不需要自己编写此内容。当您使用快速入门 copypasta 时,您的 AI 代理会处理此问题。这些例子仅供参考。
重大更改: Nix 现在仅从
programs.openclaw.config/instances.<name>.config(模式类型)发出配置。旧的提供程序/路由/代理选项已被删除。
OpenClaw 需要什么(最少)
- Telegram 机器人令牌文件 - 通过 @BotFather 创建,设置
channels.telegram.tokenFile - 您的 Telegram 用户 ID - 从 @userinfobot 获取,设置
channels.telegram.allowFrom - 网关身份验证令牌 - 为本地网关设置
gateway.auth.token(或OPENCLAW_GATEWAY_TOKEN) - 提供商 API 密钥 - 通过环境设置(例如“ANTHROPIC_API_KEY”)或“config.env.vars”(避免存储中的机密)
就是这样。其他一切都有合理的默认值。
最小配置(单实例)
最简单的设置:
未定义尼克斯 { 程序.openclaw = { 启用=真; 配置={ 网关={ 模式=“本地”; 授权={ 令牌 = "<网关令牌>"; # 或设置 OPENCLAW_GATEWAY_TOKEN }; };
频道.电报 = { tokenFile =“/run/agenix/telegram-bot-token”; # 任何文件路径都可以 允许来自= [12345678]; # 您的 Telegram 用户 ID }; };
通过 nix-steipete-tools 提供的内置插件(工具 + 技能)。
插件=[
{ 源 = "github:openclaw/nix-steipete-tools?dir=tools/summarize"; }
];}; } 未定义
然后:home-manager switch --flake .#youruser
合理的默认配置
使用“instances.default”解锁每个组的提及规则。如果设置了“instances”,则不需要“programs.openclaw.enable”。
未定义尼克斯 { 程序.openclaw = { 文件=./文件; 配置={ 网关={ 模式=“本地”; 授权={ 令牌 = "<网关令牌>"; # 或设置 OPENCLAW_GATEWAY_TOKEN }; };
频道.电报 = { tokenFile =“/run/agenix/telegram-bot-token”; 允许来自 = [ 12345678 # 你 (DM) -1001234567890 #情侣组(无需@提及) -1002345678901 # 嘈杂的群体(需要@提及) ]; 组={ “*” = { 要求提及 = true; }; “-1001234567890”= { requireMention = false; }; #情侣组 “-1002345678901”= { requireMention = true; }; # 嘈杂的群体 }; }; };
实例.默认= {
启用=真;
包= pkgs.openclaw; # 含电池
stateDir = "/.openclaw";
工作空间目录 = "/.openclaw/工作空间";
launchd.enable = true;
插件(产品:固定 GitHub)。内置程序是通过 nix-steipete-tools 实现的。
# MVP 目标:回购指针自动解析为工具+技能。
插件=[
{ 源 = "github:openclaw/nix-steipete-tools?dir=tools/peekaboo"; }
{ 来源 = "github:joshp123/xuezh"; }
{
来源=“github:joshp123 / padel-cli”;
配置={
env = { PADEL_AUTH_FILE = “/run/agenix/padel-auth”; };
设置={
默认位置=“CITY_NAME”;
Preferred_times = [ "18:00" "20:00" ];
首选持续时间 = 90;
场地=[
{
id = "VENUE_ID";
别名 = "VENUE_ALIAS";
名称 =“VENUE_NAME”;
室内=真;
时区=“时区”;
}
];
};
};
}
];
};}; } 未定义
高级
双实例设置(prod + dev)
使用共享的基本配置并仅覆盖不同的部分。更改本地插件或网关代码后,重新运行“home-manager switch”进行重建。
未定义尼克斯
薄片输入(pin prod + 应用程序)
输入 = { nix-openclaw.url = "github:openclaw/nix-openclaw?ref=v0.1.0"; # 固定 macOS 应用程序 + 网关包 };
让 产品配置 = { 频道.电报 = { tokenFile =“/run/agenix/telegram-prod”; 允许来自= [12345678]; }; }; 开发配置 = { 频道.电报 = { tokenFile =“/run/agenix/telegram-dev”; 允许来自= [12345678]; }; }; 产品 = { 启用=真; # Prod 网关引脚(来自上面的 nix-openclaw 输入 @ v0.1.0)。 包= input.nix-openclaw.packages.${pkgs.system}.openclaw-gateway; 配置=产品配置; 插件 = [ { 源 = "github:owner/your-plugin"; } ]; }; 在{
固定 macOS 应用程序(POC:没有本地应用程序构建,使用上面的 nix-openclaw @ v0.1.0)。
程序.openclaw.appPackage = input.nix-openclaw.packages.${pkgs.system}.openclaw-app; 程序.openclaw.documents = ./documents; 程序.openclaw.instances = { 产品 = 产品; 开发 = 产品 // { # Dev 使用相同的固定 macOS 应用程序(来自 nix-openclaw 输入), # 但将网关包覆盖到本地结帐。 配置=开发配置; 网关端口 = 18790; # 本地网关结帐(路径)。应用程序保持固定状态。 gatewayPath = "/Users/you/code/openclaw"; # 如果名称冲突(最后获胜),本地插件将覆盖 prod。 p
lugins = prod.plugins ++ [ { 源=“路径:/Users/you/code/your-plugin”; } { 来源=“github:joshp123 / padel-cli”; 配置={ env = { PADEL_AUTH_FILE = “/run/agenix/padel-auth-dev”; }; 设置={ 默认位置=“CITY_NAME”; 首选时间 = [ "18:0
说明:该页面原文较长,已翻译前半部分;完整原文请查看原始链接。
