Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Quick start with disposable fixtures

This tutorial uses checked-in synthetic fixtures only. It does not contact a real provider.

nix develop
cargo run -- validate --config-json tests/fixtures/canonical/minimal-site.json --format json
cargo run -- plan synthetic/example --config-json tests/fixtures/canonical/minimal-site.json --format json

For the Gate C backup-job fixture:

cargo run -- validate --config-json tests/fixtures/infrastructure/backup-job-site.json --format json

For Nix-authored sites, use the shared model and let NXD project canonical resources:

{
  nxd = {
    stack.name = "example";
    site.guests.web = {
      cluster = "lab";
      node = "pve-a";
      vmid = 120;
      tags = [ "production" ];
    };
    providers.pve.lab = {
      endpoint = "https://pve.example.invalid:8006";
      credentialBinding = "secret/pve-api";
    };
    secrets.bindings.pve-api = {
      resolver = "sops-age";
      document = "sites/example/pve.yaml";
      key = "token";
    };
    operations.production.includeTags = [ "production" ];
  };
}

Export it through nxd.lib.evalConfiguration as nxdConfigurations.<site>, then run nxd validate --source .#nxdConfigurations.<site>. Validation does not contact provider endpoints or resolve secret values.

Do not substitute production endpoints into fixture files. Real endpoint runs require an accepted runbook and explicit owner authorization.