Nix 安装
推荐用 nix-openclaw 来运行 OpenClaw —— 这是一个开箱即用的 Home Manager 模块。
快速开始
把下面这段话复制给你的 AI agent(Claude、Cursor 等):
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
Reference the nix-openclaw README for module options.
📦 完整指南: github.com/openclaw/nix-openclaw
nix-openclaw 仓库是 Nix 安装的权威文档。这个页面只是快速概览。
你会得到什么
- Gateway + macOS 应用 + 工具(whisper、spotify、cameras)—— 全部版本锁定
- Launchd 服务,重启后自动运行
- Plugin 系统,声明式配置
- 即时回滚:
home-manager switch --rollback
Nix Mode 运行时行为
当设置了 OPENCLAW_NIX_MODE=1 时(用 nix-openclaw 会自动设置):
OpenClaw 支持 Nix mode,让配置变得确定性,并禁用自动安装流程。 通过导出环境变量来启用:
OPENCLAW_NIX_MODE=1
在 macOS 上,GUI 应用不会自动继承 shell 环境变量。你也可以 通过 defaults 命令启用 Nix mode:
defaults write bot.molt.mac openclaw.nixMode -bool true
配置和状态路径
OpenClaw 从 OPENCLAW_CONFIG_PATH 读取 JSON5 配置,并把可变数据存储在 OPENCLAW_STATE_DIR。
OPENCLAW_STATE_DIR(默认:~/.openclaw)OPENCLAW_CONFIG_PATH(默认:$OPENCLAW_STATE_DIR/openclaw.json)
在 Nix 下运行时,要明确设置这些路径到 Nix 管理的位置,这样运行时状态和配置 就不会进入不可变的 store。
Nix mode 下的运行时行为
- 自动安装和自我修改流程被禁用
- 缺少依赖时会显示 Nix 专属的修复提示
- UI 会显示只读的 Nix mode 横幅
打包说明(macOS)
macOS 打包流程需要一个稳定的 Info.plist 模板,位于:
apps/macos/Sources/OpenClaw/Resources/Info.plist
scripts/package-mac-app.sh 会把这个模板复制到应用包中,并修补动态字段
(bundle ID、version/build、Git SHA、Sparkle keys)。这让 plist 对 SwiftPM
打包和 Nix 构建保持确定性(不依赖完整的 Xcode 工具链)。
相关链接
- nix-openclaw —— 完整设置指南
- 向导 —— 非 Nix 的 CLI 设置
- Docker —— 容器化设置