fleet.compute
154 options
fleet.compute
Every LXC/VM across all providers and envs. Entries live in nix/hosts/**/
Type: attribute set of (submodule)
Default:
{ }
Example:
{
app-db = {
env = "platform";
stack = "core";
provider_instance = "proxmox.dev";
kind = "container";
vm_id = 204;
internal_ip = "192.0.2.104";
cpu_cores = 4;
memory_mb = 8192;
tags = [ "postgres" ];
protect = true;
mount_points = [
{ datastore = "local-storage"; path = "/data"; size = "64G"; }
];
};
}
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.ansible_playbook
Override the Ansible playbook the terranix ansible_playbook
emitter chains to this host after provisioning. By convention
the framework playbooks apply (non-NixOS containers →
fleetkit’s ansible/playbooks/developer.yml, VMs tagged
“pve-host” → ansible/playbooks/pve.yml); set this to a path
string (absolute, or relative to the tofu working dir
.tf/
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.arch
Container CPU architecture (PVE arch, bpg cpu.architecture). Emitted only when not amd64. LXC only.
Type: one of "amd64", "arm64", "armhf", "i386"
Default:
"amd64"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.bootOrder
XO VMs: explicit boot order (c=disk n=network d=dvd); null derives from tags (transient => dnc). Authored form of what the post-create boot-order hook applies.
Type: null or one of "cnd", "dnc"
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloneFrom
If non-null, clone from this source VMID at provision time.
Type: null or signed integer
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init
Cloud-init user-data for VM guests (users, write_files, runcmd, hostname, VyOS config commands). Ignored for entries that don’t render cloud-init (e.g. LXC containers).
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.datastore
PVE storage the cloud-init drive is allocated on. null = fleet.settings.providers.proxmox.defaultDatastore.
Type: null or string
Default:
null
Example:
"local"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.enable
Attach a cloud-init drive and emit the initialization block (hostname, DNS, ip_config, identity). false = no cloud-init at all — appliance images that configure themselves (the legacy CLOUD_INIT=no).
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.hostname
Override hostname (defaults to fleet.compute key).
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.install_nix
If true, append a Determinate Nix install command to cloud-init runcmd.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.runcmd
Extra runcmd lines appended after install_nix. YAML quoting is the caller’s responsibility.
Type: list of string
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.users
Local users created by cloud-init’s users: directive.
Type: list of (submodule)
Default:
[ ]
Example:
[ { ref = "alice"; extra_groups = [ "docker" ]; } ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.users.*.extra_groups
Linux groups added on this VM (e.g. “docker”). Independent of LDAP groups in fleet.access.users.
Type: list of string
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.users.*.name
Username (inline mode; ignored when ref is set).
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.users.*.ref
Registry key into fleet.access.users.
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.users.*.ssh_keys
SSH keys (inline mode; ignored when ref is set).
Type: list of string
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.users.*.sudo
Grant passwordless sudo on this VM.
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.vyos_config_commands
VyOS-specific cloud-init: a list of VyOS configuration tree
commands (e.g. “set system host-name ‘router’”). When non-empty,
renders as a top-level vyos_config_commands: block in the
user-data — VyOS’s cloud-init module reads this and applies the
commands at first boot inside a config transaction (load → set
→ commit → save). Non-VyOS substrates ignore the block. Used
to bootstrap hostname, HTTPS API + token, base interface IPs,
and SSH on a fresh VyOS install so the Terraform provider can
take over from there.
Type: list of string
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.write_files
Files written to the VM filesystem before runcmd runs.
Type: list of (submodule)
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.write_files.*.content
Literal file contents, embedded verbatim in the cloud-init user-data.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.write_files.*.owner
“user:group” ownership passed to cloud-init write_files.
Type: string
Default:
"root:root"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.write_files.*.path
Absolute destination path of the file inside the guest.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cloud_init.write_files.*.permissions
Octal file mode string passed to cloud-init write_files.
Type: string
Default:
"0644"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.cpu_cores
Number of CPU cores allocated to the guest.
Type: signed integer
Default:
2
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.data_disks
Additional virtio data disks. Emitted as virtio1, virtio2, … and formatted/mounted by cloud-init.
Type: list of (submodule)
Default:
[ ]
Example:
[ { size_gb = 100; mount_path = "/data"; } ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.data_disks.*.datastore_id
PVE storage to allocate the disk on. Defaults to fleet.settings.providers.proxmox.defaultDatastore.
Type: string
Default:
config.fleet.settings.providers.proxmox.defaultDatastore
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.data_disks.*.filesystem
Filesystem to format with on first boot.
Type: string
Default:
"ext4"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.data_disks.*.mount_path
Mountpoint (e.g. /data).
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.data_disks.*.size_gb
Disk size in GiB.
Type: signed integer
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.devices
Host device nodes passed through into the container (bpg device_passthrough → PVE devN entries): TUN for VPN software, /dev/dri + /dev/kfd + /dev/nvidia* for GPU transcoding, /dev/apex_0 for a Coral TPU. Replaces the lxc.conf edits the community scripts made. LXC only.
Type: list of (submodule)
Default:
[ ]
Example:
[ { path = "/dev/net/tun"; }
{ path = "/dev/dri/renderD128"; gid = 44; }
{ path = "/dev/dri/card0"; gid = 44; } ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.devices.*.deny_write
Expose the device read-only.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.devices.*.gid
Owner gid of the node inside the container (community scripts use 44 = video for /dev/dri). Unprivileged CTs need this to match the guest’s group.
Type: null or integer between 0 and 65535 (both inclusive)
Default:
null
Example:
44
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.devices.*.mode
Access mode of the node inside the container. null = PVE default.
Type: null or string matching the pattern ^0[0-7]{3}$
Default:
null
Example:
"0660"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.devices.*.path
Host device node passed through into the LXC (PVE devN: entry). Examples: /dev/net/tun, /dev/dri/renderD128, /dev/dri/card0, /dev/kfd, /dev/apex_0.
Type: string matching the pattern ^/dev/.+
Default: none (required when its feature is enabled)
Example:
"/dev/dri/renderD128"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.devices.*.uid
Owner uid of the node inside the container. null = PVE default (root).
Type: null or integer between 0 and 65535 (both inclusive)
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.dns
Per-guest create-time DNS override ({ servers, domain }); nulls inherit fleet.network.dns_servers / dns_domain. The declarative twin of the legacy var_ns / var_searchdomain.
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.dns.domain
Create-time DNS search domain for this guest. null = inherit fleet.network.dns_domain; “” = explicitly none.
Type: null or string
Default:
null
Example:
"lab.example.internal"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.dns.servers
Create-time resolvers written into this guest’s PVE config. null = inherit fleet.network.dns_servers.
Type: null or (list of string)
Default:
null
Example:
[
"192.0.2.53"
"1.1.1.1"
]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.enabled
Toggle for build-on-demand entries. When false, the entry is
filtered out before validation + emission, so fleet deploy tf apply <stack> neither provisions nor preserves it. Flip to
true to materialise; flip back to false (and apply) to
destroy. See nix/hosts/xoa/xo-installer-v10.nix for the
canonical pattern.
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.env
Logical env (infra / platform / dev / prod / …).
Type: string
Default: none (required when its feature is enabled)
Example:
"platform"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.features
PVE container feature flags ({ nesting, fuse, keyctl } default true; { mknod, mount } default off; LXC only).
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.features.fuse
Allow FUSE filesystem mounts inside the LXC (PVE fuse feature).
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.features.keyctl
Allow the keyctl() syscall inside the LXC (PVE keyctl feature; needed by systemd-based guests).
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.features.mknod
Allow creating device nodes inside the LXC (PVE mknod feature). Emitted only when true — a non-root API token 403s on the field otherwise.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.features.mount
Filesystem types the LXC may mount itself (PVE mount feature). PVE accepts nfs and cifs; FUSE is the separate fuse flag. Emitted only when non-empty.
Type: list of (one of "nfs", "cifs")
Default:
[ ]
Example:
[
"nfs"
"cifs"
]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.features.nesting
Allow nested containers/namespaces inside the LXC (PVE nesting feature; needed for systemd-nspawn, Docker, nix sandboxed builds).
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.fleet_ns
Fleet namespace this entry belongs to (ADR-097). null = the incumbent/default fleet (top-level provider tree; unprefixed stacks + legacy state keys). Set by the v2 normaliser when lifting from fleet.fleets.
Type: null or string
Default:
null
Example:
"jeirslab"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.hook_script
PVE hook script file id (a snippets file, e.g. a kind = "file" resource) run by PVE at the guest’s lifecycle phases. LXC only.
Type: null or string
Default:
null
Example:
"local:snippets/post-create.sh"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.host_managed
Override bpg-provider network_interface.host_managed for this host. null = use provider default (host_managed=0). true = let PVE configure the in-container interface from ip_config (legacy / bootstrap-friendly).
Type: null or boolean
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.ignore_changes
Terraform attribute paths emitted into lifecycle.ignore_changes — drift on these attributes is ignored at plan time.
Type: list of string
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.image
Explicit guest image. VMs: “file:<file_id>” (a disk image file
resource), “clone:import content type, e.g. through a
kind = "download" resource — the appliance-image path; PVE 8.4+).
Containers: a vztmpl reference for a non-NixOS rootfs.
Type: null or string
Default:
null
Example:
"import:local:import/example-cloud-amd64.qcow2"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.import
Cross-provider import settings ({ from_uuid }). Set from_uuid to adopt an existing XO VM instead of creating a fresh one.
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.import.from_uuid
XO VM UUID for cross-provider imports (e.g. pve-prod).
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces
Ordered NIC list for network_mode = "declared"; index i becomes net (LXC: eth unless name says otherwise). Empty for every other mode (validator-enforced).
Type: list of (submodule)
Default:
[ ]
Example:
[ { bridge = "vmbr1"; ipv4 = "192.0.2.10/24"; gateway = "192.0.2.1"; vlan = 42; }
{ bridge = "vmbr0"; ipv4 = "dhcp"; ipv6.method = "auto"; mac = "BC:24:11:00:00:10"; } ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.bridge
PVE bridge this NIC attaches to (PVE’s stock default bridge is vmbr0). Ignored when vnet is set.
Type: string
Default:
"vmbr0"
Example:
"vmbr1"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.firewall
Enable the PVE firewall on this NIC.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.gateway
IPv4 default gateway (only with a static CIDR; at most one NIC per guest).
Type: null or string
Default:
null
Example:
"192.0.2.1"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.ipv4
IPv4 config: “dhcp”, “manual” (PVE ip=manual, the guest configures itself), a CIDR (the prefix is explicit — no hidden /24), or null (no IPv4 block).
Type: null or one of "dhcp", "manual" or string matching the pattern ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[12][0-9]|3[0-2])$
Default:
"dhcp"
Example:
"192.0.2.10/24"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.ipv6
IPv6 config ({ method, address, gateway }).
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.ipv6.address
Static IPv6 address in CIDR notation (method = static).
Type: null or string
Default:
null
Example:
"2001:db8::10/64"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.ipv6.gateway
IPv6 default gateway (method = static only).
Type: null or string
Default:
null
Example:
"2001:db8::1"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.ipv6.method
IPv6 configuration for this NIC: none (nothing emitted — the legacy “disable” too), auto (SLAAC), dhcp, or static (address required).
Type: one of "none", "auto", "dhcp", "static"
Default:
"none"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.mac
Pinned MAC address, uppercase colon-separated. null = PVE assigns one.
Type: null or string matching the pattern ^([0-9A-F]{2}:){5}[0-9A-F]{2}$
Default:
null
Example:
"BC:24:11:00:00:10"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.model
Virtual NIC model (VMs only; LXC NICs are veth).
Type: one of "virtio", "e1000", "e1000e", "rtl8139", "vmxnet3"
Default:
"virtio"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.mtu
NIC MTU (PVE mtu=): 576-65535, or 1 on a VM NIC to inherit the bridge MTU.
Type: null or signed integer
Default:
null
Example:
1400
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.name
In-guest interface name (LXC). null = eth
Type: null or string
Default:
null
Example:
"eth0"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.rate_limit_mbps
Egress rate limit in MB/s (PVE rate=).
Type: null or (positive integer, meaning >0)
Default:
null
Example:
100
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.vlan
802.1Q VLAN tag (PVE tag=).
Type: null or integer between 1 and 4094 (both inclusive)
Default:
null
Example:
42
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.interfaces.*.vnet
PVE SDN VNet id to attach to instead of a bridge (PVE writes it into the bridge= field). Declare the VNet as a kind = "sdn-vnet" resource on the same provider instance.
Type: null or string
Default:
null
Example:
"lab"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.internal_bridge
Bridge the legacy single-internal mode attaches eth0 to. null = vmbr1, or vmbr0 when the provider instance is listed in fleet.settings.providers.proxmox.singleBridgeInstances. (Declared-mode hosts set the bridge per interface instead.)
Type: null or string
Default:
null
Example:
"vmbr2"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.internal_ip
Internal fleet-LAN IPv4 address (bare, no prefix). Statically configured into the guest at create time and used as the host’s inventory/SSH address (hosts.json, DNS A records). Empty for hosts without an internal interface (e.g. DHCP’d XCP-ng VMs).
Type: string
Default:
""
Example:
"192.0.2.104"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.ip
External/LAN IPv4 address (bare, no prefix — the emitter appends the prefix length). Used by the external leg of the dual / single-external / custom network modes. Empty when the host has no external interface.
Type: string
Default:
""
Example:
"198.51.100.20"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.kind
LXC container or KVM VM.
Type: one of "container", "vm"
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.lxc_extra_conf
Raw lines appended to /etc/pve/lxc/optional bind mounts, autodev hooks).
Applied by a terraform_data local-exec over root SSH to the
container’s node (fleet.providers.proxmox.
Type: list of string
Default:
[ ]
Example:
[ "lxc.cgroup2.devices.allow: c 188:* rwm"
"lxc.mount.entry: /dev/serial/by-id dev/serial/by-id none bind,optional,create=dir" ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.mac_address_eth0
Pin the eth0 MAC address (uppercase colon-separated, e.g. “BC:24:11:5B:EA:26”). null = bpg-provider auto-assigns. Currently honoured by lxc-router mode; extend the network-mode emitters as needed for other modes.
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.mac_address_eth1
Pin the eth1 MAC address. Required by internal-plus-lan-mac mode (a second NIC on the internal bridge carrying an ingress identity a LAN-router port-forward targets by MAC).
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.memory_mb
RAM in MiB. LXC containers pick up changes without a restart; VMs need a reboot.
Type: signed integer
Default:
2048
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.mount_points
Extra PVE mount-point volumes ({ datastore, path, size, backup }) attached to the container (LXC only).
Type: list of (submodule)
Default:
[ ]
Example:
[ { datastore = "local-storage"; path = "/data"; size = "64G"; } ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.mount_points.*.backup
Include this volume in vzdump backups.
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.mount_points.*.datastore
PVE storage the mount-point volume is allocated on (e.g. “local-storage”).
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.mount_points.*.path
Mountpoint inside the container (e.g. “/data”).
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.mount_points.*.size
Size like “256G”. Stringly-typed to match bpg input.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.name
Hostname for the machine (defaults to the fleet attrset key).
Type: string
Default:
"‹name›"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.network_mode
Which NIC/bridge layout the emitter generates. “declared” = the NICs come from interfaces (any bridge/VNet, DHCP or explicit CIDR, VLAN, MTU, MAC, IPv6) — the general form; single-internal (one NIC on the internal bridge), single-external (one NIC on the LAN bridge), dual (both) and the custom/special-case layouts are the legacy fixed shapes kept for compatibility.
Type: one of "single-internal", "single-external", "dual", "custom-netgate", "custom-btc-testnet", "custom-vm", "lxc-router", "declared", "internal-plus-lan-mac"
Default:
"single-internal"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.node
PVE cluster member name (e.g. “pve-data”). Empty = defaults to provider’s cluster.primary_node.
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note
Structured PVE Notes content. Takes precedence over notes when set.
Type: null or (submodule)
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.extra
Free-form markdown appended last.
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.links
Related links (dashboards, runbooks, tickets) rendered as a bullet list.
Type: list of (submodule)
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.links.*.text
Link label as rendered in the Notes markdown.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.links.*.url
Link target URL.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.services
Services running on the host, rendered as a bullet list (name, address, port).
Type: list of (submodule)
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.services.*.address
Address/URL the service is reachable at. Empty = omitted from the rendered line.
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.services.*.name
Service name shown in the Notes services table.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.services.*.port
Service port. null = omitted from the rendered line.
Type: null or signed integer
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.stateful
Render the STATEFUL/protected warning banner in the Notes panel. Informational only — destruction protection itself comes from protect / STATEFUL_TAGS.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.summary
One-paragraph description rendered under the title.
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.note.title
Heading of the rendered Notes markdown. Empty = falls back to the host name.
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.notes
Free-text audit note. Plain-string fallback rendered in the PVE Notes panel (Summary tab) when the structured note is null.
Type: string
Default:
""
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.onboot
Start the guest when the PVE node boots (onboot).
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.pool
Pool membership — pool_id of a fleet.resources pool entry.
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.privileged
Run this LXC in privileged mode (sets unprivileged = false in the Proxmox container). Only needed for hosts that run NAT or other kernel-capability-sensitive workloads.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.protect
Emit lifecycle.prevent_destroy = true on the generated Terraform resource. Required (or a strict-destruction-policy provider) for entries carrying a fleet.STATEFUL_TAGS tag; fleet tf destroy refuses to target protected resources.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.protection
PVE guest protection flag (blocks destroy/remove in the PVE UI and API). Distinct from protect, which is the Terraform prevent_destroy lifecycle. Emitted only when true.
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.provider_instance
Pointer to fleet.providers: “
Type: string matching the pattern ^[a-z-]+\.[a-z][a-z0-9-]*$
Default: none (required when its feature is enabled)
Example:
"proxmox.dev"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.provides
This machine IS a member (node) of the named provider instance — the ADR-096 recursive estate link. Its resource name must equal the member/node name it provides. Drives derived hypervisor scrape targets and layer-dependency queries.
Type: null or string
Default:
null
Example:
"proxmox.prod"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.provisioning
“managed” = terranix/tofu-provisioned by this repo; “external” = provisioned elsewhere, NixOS-managed only.
Type: one of "managed", "external"
Default:
"managed"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.root_disk_datastore
PVE storage the root disk is allocated on. Defaults to fleet.settings.providers.proxmox.defaultDatastore.
Type: string
Default:
config.fleet.settings.providers.proxmox.defaultDatastore
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.root_disk_gb
Root disk size in GiB.
Type: signed integer
Default:
16
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.scope
ADR-097 derivation contract: an “estate”-scoped resource is a singleton serving every fleet on this substrate (router/DNS edge, builder, observability) and may fold ALL fleets’ manifests into its config; “fleet”-scoped resources see only their own namespace. Enforcement lands with the second fleet — today this is declared intent + docs surface.
Type: one of "fleet", "estate"
Default:
"fleet"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.ssh_groups
Authentik groups allowed SSH access (sssd simple_allow_groups).
Type: list of string
Default:
[
"platform-admins"
]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.stack
Dot-path stack label within env.
Type: string
Default: none (required when its feature is enabled)
Example:
"bitcoin.mainnet"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.start_on_create
Start the guest right after Terraform creates it. false = create stopped (appliance images that need a first manual step).
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.startup
PVE startup ordering ({ order, up_delay, down_delay }). null = not managed.
Type: null or (submodule)
Default:
null
Example:
{ order = 10; up_delay = 30; }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.startup.down_delay
Seconds PVE waits after stopping this guest before stopping the next one.
Type: null or (unsigned integer, meaning >=0)
Default:
null
Example:
30
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.startup.order
PVE start/shutdown order (lower starts first). null = PVE default (any order).
Type: null or (unsigned integer, meaning >=0)
Default:
null
Example:
10
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.startup.up_delay
Seconds PVE waits after starting this guest before starting the next one.
Type: null or (unsigned integer, meaning >=0)
Default:
null
Example:
30
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.startup_order
Deprecated flat alias of startup.order — PVE LXC boot ordering (lower boots first). null = PVE default ordering. Prefer the structured startup option.
Type: null or signed integer
Default:
null
Example:
3
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.sudo_groups
Authentik groups granted password-required sudo on this host (sssd → security.sudo.extraRules). In practice a subset of ssh_groups (you cannot sudo on a host you cannot log into). Empty = no LDAP user gets sudo here; local wheel accounts (core.nix) are unaffected. See ADR-028.
Type: list of string
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.swap_mb
Swap in MiB (LXC only).
Type: signed integer
Default:
2048
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.tags
Free-form tags (shown in the PVE UI, usable as Colmena deploy targets). Tags listed in fleet.STATEFUL_TAGS additionally force destruction protection (validator-enforced).
Type: list of string
Default:
[ ]
Example:
[
"postgres"
"monitoring"
]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm
VM-only hardware settings ({ machine, bios, efi, cpu_type, scsi_hardware, root_disk, serial_console, agent, boot_order, tablet }). Ignored for containers (validator rejects non-defaults there).
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.agent
QEMU guest agent enabled. null = fleetkit’s rule (on for image-based and NixOS-template VMs).
Type: null or boolean
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.bios
Firmware. “ovmf” (UEFI) also emits an EFI vars disk from efi. null = PVE default (seabios).
Type: null or one of "seabios", "ovmf"
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.boot_order
Explicit boot device order (PVE boot: order=). null = PVE default.
Type: null or (list of string)
Default:
null
Example:
[
"scsi0"
"net0"
]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.cpu_type
QEMU CPU model (PVE cpu:). “host” (fleetkit default) passes the node’s CPU through; community VMs default to kvm64 for migratability.
Type: string
Default:
"host"
Example:
"x86-64-v2-AES"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.efi
EFI vars disk settings, used when bios = ovmf.
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.efi.datastore
PVE storage for the EFI vars disk. null = fleet.settings.providers.proxmox.defaultDatastore.
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.efi.pre_enrolled_keys
Pre-enrol the distribution Secure Boot keys into the EFI vars disk (community default: off).
Type: boolean
Default:
false
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.efi.type
EFI vars disk size/type (PVE efitype; community default 4m).
Type: one of "2m", "4m"
Default:
"4m"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.machine
QEMU machine type: pc (i440fx, community default) or q35. null = PVE default.
Type: null or one of "pc", "q35"
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.root_disk
Root disk attributes beyond size/datastore ({ interface, cache, discard, iothread, ssd }).
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.root_disk.cache
Disk cache mode (PVE cache=). null = PVE default.
Type: null or one of "none", "directsync", "writethrough", "writeback", "unsafe"
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.root_disk.discard
Pass discard/TRIM through to the storage (PVE discard=).
Type: null or one of "on", "ignore"
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.root_disk.interface
Bus/device of the root disk (community VMs use scsi0 with virtio-scsi-pci; fleetkit’s NixOS images boot from virtio0).
Type: string
Default:
"virtio0"
Example:
"scsi0"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.root_disk.iothread
Use a dedicated I/O thread (PVE iothread=).
Type: null or boolean
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.root_disk.ssd
Present the disk as an SSD to the guest (PVE ssd=).
Type: null or boolean
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.scsi_hardware
SCSI controller model (PVE scsihw). null = PVE default.
Type: null or one of "virtio-scsi-pci", "virtio-scsi-single", "lsi", "lsi53c810", "megasas", "pvscsi"
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.serial_console
Attach a serial socket so qm terminal <vmid> reaches the guest console.
Type: boolean
Default:
true
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm.tablet
USB tablet device (community VMs pass -tablet 0). null = PVE default (on).
Type: null or boolean
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm_id
Proxmox VMID.
Type: signed integer
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.vm_template
Legacy: “nixos” clones VMID 9000, “debian-13” imports the prepared Debian qcow2 (ADR-013/018). Prefer image for new entries.
Type: one of "nixos", "debian-13"
Default:
"debian-13"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa
XCP-ng/XOA-specific compute config. Active when provider_instance starts with xen-orchestra.
Type: submodule
Default:
{ }
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.cloud_network_config
Cloud-init network-config (v2 YAML) passed verbatim to
xenorchestra_vm.cloud_network_config. Only meaningful for
cloud-init guests (non-NixOS); use match: {macaddress: ...}
stanzas against pinned xoa.networks[*].mac so the config is
immune to guest interface naming (eth0 vs enX0 on Xen).
NixOS VMs leave this null — networkd owns their config.
(INFRA-194; also the path INFRA-174’s Ubuntu dev box needs.)
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.disks
Additional VDIs beyond the cloned template root disk.
Type: list of (submodule)
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.disks.*.name
VDI name label as shown in Xen Orchestra.
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.disks.*.size_add_gb
Additional GiB layered on top of size_gb, applied
IMPERATIVELY by xoa-cli reconcile-disks (never by
terraform — INFRA-172 / ADR-081). Live target =
size_gb + size_add_gb; the reconciler grows the VDI
when live < target and never shrinks. Grow a disk by
editing this field and running the reconciler.
Type: signed integer
Default:
0
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.disks.*.size_gb
BASE size in GiB — what terranix provisions at CREATE time. ForceNew in the vatesfr/xenorchestra provider; ignored for drift afterwards (mkXoLifecycle). Do NOT bump this to grow a live disk — use size_add_gb.
Type: signed integer
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.disks.*.sr_ref
Full fleet.resources key for the SR (e.g. “xo-sr-main”).
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.iso_ref
Optional fleet.resources key for an ISO to attach as a CDROM
(e.g. “xo-iso-nixos-minimal”). When set, the VM is created
with the ISO pre-attached and the underlying VM’s boot order
(“dc” — CD then disk in XOA’s UEFI default) makes it boot
from the ISO on first power-on. Used for one-shot OS installs
onto blank disks. After install, eject via xo-cli vm.ejectCd
and the VM boots from disk on next start.
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.networks
Ordered NIC list. First entry becomes eth0 inside the guest.
Type: list of (submodule)
Default:
[ ]
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.networks.*.mac
Pin MAC address; null = XCP-ng assigns one.
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.networks.*.ref
Full fleet.resources key for the network (e.g. “xo-network-wan”).
Type: string
Default: none (required when its feature is enabled)
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.pool_ref
Full fleet.resources key for the target XCP-ng pool (e.g. “xo-pool-main”).
Type: string
Default:
"xo-pool-main"
Declared by: nix/fleet/compute.nix
fleet.compute.<name>.xoa.template
Full fleet.resources key for the source template (e.g. “xo-template-nixos”). Required for kind=vm on XOA.
Type: null or string
Default:
null
Declared by: nix/fleet/compute.nix