Skip to content

Nix 安装

在 Nix 体系下运行 OpenClaw 的推荐方式是使用 nix-openclaw —— 一个“电池内置”的 Home Manager 模块。

快速开始

把下面这段粘贴给你的 AI agent(Claude、Cursor 等):

text
我想在 Mac 上配置 nix-openclaw。
仓库:github:openclaw/nix-openclaw

我希望你帮我做:
1. 检查是否安装了 Determinate Nix(没有就安装)
2. 基于 templates/agent-first/flake.nix 在 ~/code/openclaw-local 创建一个本地 flake
3. 帮我创建一个 Telegram bot(@BotFather)并获取我的 chat ID(@userinfobot)
4. 配置 secrets(bot token、Anthropic key)—— 用 ~/.secrets/ 下的明文文件即可
5. 填写模板占位符并运行 home-manager switch
6. 验证:launchd 正在运行、bot 能回复消息

请参考 nix-openclaw 的 README 了解模块选项。

📦 完整指南: github.com/openclaw/nix-openclaw

nix-openclaw 仓库是 Nix 安装的事实标准(source of truth)。本页只是一个快速概览。

你会得到什么

  • Gateway + macOS app + tools(whisper、spotify、cameras)—— 全部已 pin
  • 可跨重启存活的 Launchd service
  • 带声明式配置的插件系统
  • 一键回滚:home-manager switch --rollback

Nix Mode 运行时行为

当设置了 OPENCLAW_NIX_MODE=1(使用 nix-openclaw 时会自动设置):

OpenClaw 会进入一种 Nix mode:让配置更可确定(deterministic),并禁用自动安装类流程。 可通过导出环境变量启用:

bash
OPENCLAW_NIX_MODE=1

在 macOS 上,GUI app 默认不会自动继承 shell 环境变量。你也可以通过 defaults 启用 Nix mode:

bash
defaults write bot.molt.mac openclaw.nixMode -bool true

Config + state 路径

OpenClaw 从 OPENCLAW_CONFIG_PATH 读取 JSON5 config,并把可变数据写入 OPENCLAW_STATE_DIR

  • OPENCLAW_STATE_DIR(默认:~/.openclaw
  • OPENCLAW_CONFIG_PATH(默认:$OPENCLAW_STATE_DIR/openclaw.json

在 Nix 下运行时,请显式把它们指向由 Nix 管理的位置,让运行时 state 与 config 不进入不可变 store。

Nix mode 下的运行时行为

  • 禁用 auto-install 与自修改(self-mutation)流程
  • 缺失依赖时会给出 Nix 特有的修复提示
  • UI 在可用时会展示只读 Nix mode banner

打包说明(macOS)

macOS 打包流程期望存在一个稳定的 Info.plist 模板,路径为:

apps/macos/Sources/OpenClaw/Resources/Info.plist

scripts/package-mac-app.sh 会把这个模板复制到 app bundle 中,并 patch 动态字段 (bundle ID、version/build、Git SHA、Sparkle keys)。 这能让 plist 对 SwiftPM 打包与 Nix 构建保持确定性(它们不依赖完整的 Xcode toolchain)。

相关链接