NixOS
ZeroClaw は nix/module.nix でマルチインスタンス対応の NixOS モジュールを提供しています。これは services.restic.backups をモデルにしており、インターネットに公開されるプロセスに適したハードニングのデフォルト設定とともに、systemd 配下で 1 つ以上のエージェントを実行します。
パッケージ
上流のflakeはZeroClawをソースからビルドします。Nixの実験的機能であるnix-commandとflakesを有効にした状態で、システムサービスをインストールせずにCLIを確認してください:
nix run github:zeroclaw-labs/zeroclaw -- --version
nix run github:zeroclaw-labs/zeroclaw -- --help
デフォルトのパッケージは ZeroClaw CLI です。開発用ツールチェーンは nix develop を通じて別途提供されます。キャッシュがない状態でのパッケージのビルドには時間がかかる場合があります。ローカルのチェックアウトを確認するには:
nix build .#zeroclaw
./result/bin/zeroclaw --version
nix flake check
Ńnix run で CLI を実行しても、ログインシェルの PATH には追加されません。NixOS に永続的にインストールする場合は、Nixpkgs が提供する pkgs.zeroclaw を利用してください:
nix
environment.systemPackages = [ pkgs.zeroclaw ];
NixpkgsのパッケージバージョンはNixpkgsのpinに従いますが、上流のflakeは選択されたZeroClawのリビジョンに従います。両者は異なる場合があります。以下のモジュールはデフォルトでpkgs.zeroclawを使用し、zeroclaw daemonコマンドを起動します。別のパッケージを使用するには、システムflakeに本リポジトリを指すzeroclaw入力がある場合、services.zeroclaw.instances.<name>.packageを設定します(例: inputs.zeroclaw.packages.${pkgs.stdenv.hostPlatform.system}.zeroclaw)。
単一インスタンス
services.zeroclaw.instances.<name> への登録が有効化のシグナルとなります。トップレベルの enable はありません。各インスタンスには、それぞれ専用の systemd ユニット、状態ディレクトリ、システムユーザーが割り当てられます。
nix
{ config, pkgs, ... }: {
imports = [ ./path/to/zeroclaw/nix/module.nix ];
age.secrets.zeroclaw-bot-token.file = ./secrets/zeroclaw-bot-token.age;
services.zeroclaw.instances.me = {
environmentFile = config.age.secrets.zeroclaw-bot-token.path;
settings = {
providers.models.anthropic.home.model = "claude-sonnet-4-6";
agents.assistant = {
model_provider = "anthropic.home";
risk_profile = "assistant";
channels = [ "telegram.home" ];
};
risk_profiles.assistant = { };
channels.telegram.home = {
enabled = true;
bot_token = "$BOT_TOKEN"; # systemd $VAR、起動時に environmentFile から置換される
allowed_users = [ "12345" ];
};
};
};
}
settings は ~/.zeroclaw/config.toml を Nix の attrset としてミラーリングし、${dataDir}/config.toml(モード 0600)にレンダリングされます。シークレットは environmentFile 経由で渡され、settings を通ることはありません。ユニットの ExecStartPre が envsubst を実行することで $VAR の参照が起動時に解決され、/nix/store のコピーには平文が含まれないようになっています。設定スキーマ(セクションヘッダー、型/エイリアスの規約)は、他のすべてのプラットフォームと同一です。
複数のインスタンス
モジュールは attrsOf submodule 形式なので、1台のホスト上のN個のテナントは1個のテナントと同じように読めます。インスタンスは、正確に1個のインスタンスがユーザーを作成し、残りが createUser = false を設定する場合に、ユーザーを共有できます。
nix
services.zeroclaw.instances = {
alice = { environmentFile = "/run/secrets/alice/identity.env"; settings = { /* … */ }; };
bob = { environmentFile = "/run/secrets/bob/identity.env"; settings = { /* … */ }; };
};
オプション
すべてのオプション項目(package、user、group、createUser、dataDir、settings、environmentFile、extraConfig、bindReadOnlyPaths)とシークレットのパターンについては、nix/README.md に記載されています。serviceConfig フィールドを上書きするには、モジュールオプションではなく、標準的な NixOS のエスケープハッチを使用してください。
nix
systemd.services."zeroclaw-me".serviceConfig.MemoryMax = "512M";
次へ
- サービス管理: ZeroClaw が非 Nix ホスト上で生成する systemd ユニット
- プロバイダー → 設定: 設定スキーマの
settingsは次を反映します