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.