Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

NixOS

ZeroClaw incluye un módulo NixOS multi-instancia en nix/module.nix. Ejecuta uno o más agentes bajo systemd con valores predeterminados de endurecimiento apropiados para un proceso expuesto a internet, siguiendo el modelo de services.restic.backups.

El paquete

El flake upstream compila ZeroClaw desde el código fuente. Con las funciones experimentales nix-command y flakes de Nix habilitadas, verifica la CLI sin instalar un servicio del sistema:

nix run github:zeroclaw-labs/zeroclaw -- --version
nix run github:zeroclaw-labs/zeroclaw -- --help

El paquete predeterminado es la CLI de ZeroClaw; la cadena de herramientas de desarrollo se expone por separado a través de nix develop. Compilar el paquete puede tardar bastante con una caché vacía. Para inspeccionar una copia local del repositorio:

nix build .#zeroclaw
./result/bin/zeroclaw --version
nix flake check

Ejecutar la CLI con nix run no la añade al PATH de tu shell de inicio de sesión. Para una instalación persistente en NixOS, Nixpkgs proporciona pkgs.zeroclaw:

nix

environment.systemPackages = [ pkgs.zeroclaw ];

La versión del paquete de Nixpkgs sigue la fijación (pin) de Nixpkgs que uses; el flake upstream sigue la revisión de ZeroClaw seleccionada. Estas pueden diferir. El módulo siguiente usa pkgs.zeroclaw por defecto e inicia su comando zeroclaw daemon. Establece services.zeroclaw.instances.<name>.package para usar otro paquete, por ejemplo inputs.zeroclaw.packages.${pkgs.stdenv.hostPlatform.system}.zeroclaw cuando tu flake del sistema tenga una entrada zeroclaw que apunte a este repositorio.

Instancia única

La pertenencia a services.zeroclaw.instances.<name> es la señal de activación; no existe un enable de nivel superior. Cada instancia obtiene su propia unidad de systemd, directorio de estado y usuario del sistema.

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";   # $VAR de systemd, sustituido desde environmentFile al iniciar
        allowed_users = [ "12345" ];
      };
    };
  };
}

settings refleja ~/.zeroclaw/config.toml como un attrset de Nix, renderizado en ${dataDir}/config.toml (modo 0600). Los secretos viajan a través de environmentFile, nunca de settings: el ExecStartPre de la unidad ejecuta envsubst para que las referencias $VAR se resuelvan al inicio, manteniendo la copia de /nix/store libre de texto plano. El esquema de configuración (encabezados de sección, convención de tipos/alias) es idéntico al de todas las demás plataformas.

Múltiples instancias

El módulo tiene forma de attrsOf submodule, por lo que N tenants en un host se leen igual que uno. Las instancias pueden compartir un usuario cuando exactamente una lo crea y el resto establece createUser = false.

nix

services.zeroclaw.instances = {
  alice = { environmentFile = "/run/secrets/alice/identity.env"; settings = { /* … */ }; };
  bob   = { environmentFile = "/run/secrets/bob/identity.env";   settings = { /* … */ }; };
};

Opciones

La superficie completa de opciones (package, user, group, createUser, dataDir, settings, environmentFile, extraConfig, bindReadOnlyPaths) y el patrón de secretos están documentados en nix/README.md. Para sobrescribir un campo de serviceConfig, use el mecanismo de escape estándar de NixOS en lugar de una opción del módulo:

nix

systemd.services."zeroclaw-me".serviceConfig.MemoryMax = "512M";

Siguiente