使用 Nix 安装和运行 OpenClaw:一套可复现的 macOS 自动化环境
在本地运行 AI 自动化工具时,很多人都会遇到几个常见问题:
依赖版本混乱
环境配置复杂
系统更新后环境损坏
服务重启后无法自动恢复
使用 Nix 可以很好地解决这些问题。
家兴网络介绍如何通过 nix-openclaw 在 macOS 上搭建一个 稳定、可复现、可回滚的 OpenClaw 环境。

这也是官方推荐的运行方式之一。
一、什么是 nix-openclaw
nix-openclaw 是一个为 OpenClaw 提供的 Home Manager 模块,可以通过 Nix 声明式配置来安装和管理 OpenClaw。
它的特点是:
所有依赖版本固定
环境可复现
系统重启后自动运行
支持一键回滚配置
项目仓库:
github.com/openclaw/nix-openclaw
二、使用 Nix 运行 OpenClaw能获得什么
通过 nix-openclaw 部署后,你会得到一整套稳定运行环境:
1)完整工具环境
包含:
OpenClaw Gateway 网关
macOS 客户端
whisper 语音工具
spotify 控制
cameras 摄像头工具
全部由 Nix 固定版本管理。
2)Launchd 服务自动运行
OpenClaw 会作为 macOS Launchd 服务运行。
即使电脑重启,服务仍然可以自动恢复。
3)声明式插件配置
所有插件和依赖都写在配置中,例如:
bot token
API key
插件启用状态
配置文件就是系统状态。
4)即时回滚
如果配置出现问题,可以直接回滚:
home-manager switch --rollback
系统会恢复到上一个稳定版本。
三、快速开始部署
下面是一种比较推荐的初始化方式。
你可以将下面的步骤交给 AI 工具(例如 Claude、Cursor)自动执行。
第一步:准备安装任务
告诉 AI 执行以下操作:
I want to set up nix-openclaw on my Mac. Repository: github:openclaw/nix-openclaw What I need you to do: 1. Check if Determinate Nix is installed (if not, install it) 2. Create a local flake at ~/code/openclaw-local using templates/agent-first/flake.nix 3. Help me create a Telegram bot (@BotFather) and get my chat ID (@userinfobot) 4. Set up secrets (bot token, Anthropic key) - plain files at ~/.secrets/ is fine 5. Fill in the template placeholders and run home-manager switch 6. Verify: launchd running, bot responds to messages
AI 会自动完成整个环境初始化流程。
四、创建 Telegram Bot
OpenClaw 的很多功能依赖 Telegram Bot。
创建流程如下:
1 创建机器人
在 Telegram 中打开:
@BotFather
发送:
/start /newbot
按照提示设置:
bot 名称
bot 用户名
创建完成后会获得 Bot Token。
2 获取 Chat ID
打开:
@userinfobot
发送任意消息即可获取:
chat_id
这个 ID 将用于 OpenClaw 通信。
五、配置 Secrets
建议把敏感信息放到本地 secrets 目录。
例如:
~/.secrets/
示例结构:
~/.secrets/ ├─ telegram-token ├─ anthropic-key
内容示例:
telegram-token 123456:AAxxxxxx anthropic-key sk-ant-xxxx
然后在 nix-openclaw 配置中引用这些文件。
六、启用 Nix 模式
nix-openclaw 会自动启用 Nix Mode。
核心环境变量:
OPENCLAW_NIX_MODE=1
在该模式下:
自动安装流程会被禁用
所有依赖由 Nix 管理
系统环境保持完全确定性
七、macOS GUI 环境变量问题
macOS GUI 应用默认不会继承 shell 的环境变量。
因此需要手动启用:
defaults write bot.molt.mac openclaw.nixMode -bool true
这样 OpenClaw GUI 就能正确识别 Nix Mode。
八、配置路径和状态目录
OpenClaw 使用两个关键路径:
| 变量 | 说明 |
|---|---|
| OPENCLAW_STATE_DIR | 运行时数据目录 |
| OPENCLAW_CONFIG_PATH | 配置文件路径 |
默认值:
OPENCLAW_STATE_DIR=~/.openclaw OPENCLAW_CONFIG_PATH=$OPENCLAW_STATE_DIR/openclaw.json
在 Nix 环境中通常会显式指定,以避免写入不可变存储。
九、Nix 模式下的运行行为
启用 Nix Mode 后,OpenClaw 的行为会有所变化:
1 自动安装被禁用
所有依赖必须通过 Nix 管理。
2 缺少依赖时会提示 Nix 修复信息
例如:
Dependency missing. Install via nix-openclaw module.
3 UI 显示只读模式
客户端界面会显示 Nix Mode 标识,提示配置由系统管理。
十、macOS 打包注意事项
OpenClaw 的 macOS 打包依赖一个固定模板:
apps/macos/Sources/OpenClaw/Resources/Info.plist
打包脚本:
scripts/package-mac-app.sh
这个脚本会:
复制 Info.plist 模板
写入动态字段
例如:
bundle ID
版本号
Git SHA
Sparkle 更新密钥
这样可以确保:
SwiftPM 构建稳定
Nix 构建可复现
不依赖完整 Xcode 环境
十一、总结
通过 nix-openclaw 运行 OpenClaw,可以获得一个更加稳定和可控的 AI 自动化环境:
环境可复现
依赖版本固定
系统更新不会破坏配置
服务自动运行
出现问题可以立即回滚
对于长期运行自动化 Agent 或 AI Bot 的用户来说,Nix 模式是一种非常值得尝试的部署方式。
如果你正在搭建自己的 AI 自动化工具链,可以考虑把 OpenClaw + Nix 作为基础架构的一部分。
它的最大优势不是“方便”,而是 长期稳定运行的确定性。