infra.provisioning
21 options
infra.provisioning.pveInstallerAnswers
infra.provisioning.pveInstallerAnswers.bindAddress
IP the answer service binds to. Defaults to loopback; host configs (netcore) set this to the LAN-facing IP so PVE/PBS installers can fetch directly.
Type: string
Default:
"127.0.0.1"
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.enable
Whether to enable PVE auto-install answer-file HTTP server.
Type: boolean
Default:
false
Example:
true
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts
List of PVE/PBS hosts the server has answers for. Each entry
must have a matching SOPS entry at
services/pve-installer-answers/passwords/<hostname> populated
before deploy — sops-nix activation fails closed otherwise.
Type: list of (submodule)
Default:
[ ]
Example:
[{
hostname = "pve-alpha";
productType = "pve";
mac = "52:54:00:12:34:56";
ip = "198.51.100.30";
cidr = "198.51.100.30/24";
domain = "example.lan";
}]
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.cidr
CIDR notation <ip>/<prefix> for the management network.
E.g., “192.0.2.99/24”.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.country
Two-letter country code written to the answer file’s [global] section; the installer derives mirror and locale defaults from it.
Type: string
Default:
"us"
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.dns
DNS server (the fleet’s internal DNS by default). Must be non-null for every declared host (asserted).
Type: null or string
Default:
lib.head config.fleet.network.internal_resolvers
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.domain
DNS domain used to build the FQDN.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.filesystem
Root filesystem for the install.
Type: one of "ext4", "xfs", "zfs (raid0)", "zfs (raid1)", "zfs (raid10)", "zfs (raidz-1)", "zfs (raidz-2)", "zfs (raidz-3)", "btrfs (raid0)", "btrfs (raid1)", "btrfs (raid10)"
Default:
"ext4"
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.firstBootScript
Shell script body executed once at the host’s first boot
after install. Served at GET /first-boot/
Empty (default) means no [first-boot] section is emitted in this host’s answer.toml and the GET endpoint returns 404 for this hostname.
Typical use: install + enable a systemd unit that runs
growpart + pvresize + lvresize on every boot, so disk
resizes (via terranix’s useDeploySizes = false flip) are
picked up automatically without operator intervention.
Type: string
Default:
""
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.gateway
Default gateway (the fleet’s internal gateway by default). Must be non-null for every declared host (asserted).
Type: null or string
Default:
config.fleet.network.gateway
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.hostname
Short hostname; combined with domain for FQDN.
ALSO used as the lookup key for the root-password SOPS entry
at services/pve-installer-answers/passwords/<hostname>.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.installDisk
Block device to install onto. XCP-ng VMs use xvda; PVE-on-
metal would be sda or nvme0n1. Must match what the kernel
sees at install time — wrong device aborts the installer
with “disk in ‘disk-selection’ not found”.
Type: string
Default:
"xvda"
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.ip
Management IPv4 address (no CIDR suffix).
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.keyboard
Keyboard layout code written to the answer file’s [global] section (Proxmox installer layout id, e.g. “en-us”, “de”).
Type: string
Default:
"en-us"
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.mac
MAC address of the install NIC, lowercase preferred (the
matcher lowercases both sides). Substring-matched against
the installer’s POSTed system_info JSON. Must be unique
across hosts or the first match wins.
Type: string matching the pattern ^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}$
Default: none (required when its feature is enabled)
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.mailto
Notification address baked into the answer file. Must be non-null for every declared host (asserted).
Type: null or string
Default:
"ops@${config.fleet.settings.domain.base}"
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.productType
Which Proxmox product the answer is for. Doesn’t affect the
answer.toml schema today (all three share it), but kept
explicit so future per-product divergences are trivial and
so log lines say “matched
Type: one of "pve", "pbs", "pmg"
Default: none (required when its feature is enabled)
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.rootSshKeys
List of authorized SSH keys for root on the freshly-installed PVE/PBS host. Typically a singleton with fleet.network.sysadmin_ssh_key.
Type: list of string
Default:
[ ]
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.hosts.*.timezone
Timezone written to the answer file’s [global] section (IANA name, e.g. “Europe/Madrid”).
Type: string
Default:
"UTC"
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.port
TCP port the answer service binds to.
Type: signed integer
Default:
8081
Declared by: nix/modules/infra/provisioning/pve-installer-answers
infra.provisioning.pveInstallerAnswers.publicUrl
Base URL the PVE installer uses to reach this server. Embedded
into the [first-boot] url field in answer.toml so the installed
host can fetch its per-host first-boot script at
<publicUrl>/first-boot/<hostname>. Default matches an
answers.<internal-domain> ingress on the serving host.
Type: null or string
Default:
"http://answers.${config.fleet.settings.domain.internal}"
Declared by: nix/modules/infra/provisioning/pve-installer-answers