nordisk/monetize
.nornir/build-variants.toml
# monetize — .nornir/build-variants.toml — EMITTED, NOT SOURCE.
#
# Generated by `cargo run --manifest-path crates/monetize-build-thing/Cargo.toml -- emit`
# from `crates/monetize-build-thing` (`impl BuildThing` in src/lib.rs). The code is the
# only source; editing this file changes NOTHING — re-run `emit` after a change.
#
# Model: variant -> features -> settings/sub-settings -> typ.
#
# Deliveries: ORIGINAL and COMMERCIAL, the same open server. No plugin is built here:
# plugins are signed guests built in monetize-impl and taken in by a RUNNING server
# (owner ruling 2026-09-25).
[nornir-build-thing]
schema = 5
[build]
offers = [
"invoice",
"sandbox",
"testmatrix",
]
base_suite = "COMMERCIAL"
[[build.variant]]
name = "monetize-ui-server"
package = "monetize-ui-server"
bin = "monetize-ui-server"
profile = "release"
target = "x86_64-unknown-linux-musl"
linkage = "not-applicable"
role = "server"
suites = [
"ORIGINAL",
"COMMERCIAL",
]
[[build.variant]]
name = "monetize-ui-web"
package = "monetize-ui-web"
bin = "monetize-ui-web"
profile = "release"
target = "wasm32-unknown-unknown"
linkage = "thin"
role = "client"
suites = [
"ORIGINAL",
"COMMERCIAL",
]
default = true
kind = "wasm"
reaches = ["monetize-ui-server"]
[[build.variant]]
name = "monetize-admin"
package = "monetize-admin"
bin = "monetize-admin"
profile = "release"
target = "x86_64-unknown-linux-musl"
manifest_dir = "crates/monetize-admin"
linkage = "not-applicable"
role = "server"
suites = [
"ORIGINAL",
"COMMERCIAL",
]
default = true
[[build.variant]]
name = "monetize-admin-installer"
linkage = "not-applicable"
role = "server"
suites = ["ORIGINAL"]
kind = "installer"
[[build.installer]]
name = "monetize-admin-installer"
variant = "monetize-admin"
volume_id = "MONETIZE_ADMIN_INSTALL"
target_disk_gib = 16
gpu = false
boot_params = [
"console=tty0",
"console=ttyS0,115200",
"panic=10",
"korp.appliance=lean",
"korp.entry=monetize-admin",
]
medium_boot = "hybrid"
[build.installer.payload]
kind = "embedded_iso"
[build.installer.env]
MONETIZE_ADMIN_DATA = "/data"
[build.installer.kernel_donor]
repo = "tunnr"
kernel = "tunnr-kernel"
[build.installer.data]
fs = "xfs"
io = "uring"
[[build.installer.params]]
name = "log_udp"
label = "Boot-narration UDP sink for a console-less VM (debug; a.b.c.d:port)"
kind = "endpoint"
required = false
boot_param = "korp.log_udp"
[[build.installer.params]]
name = "reinstall"
label = "Reinstall policy for a disk that already carries data: keep (upgrade, /data survives — the ledger and monetize's signing key with it) | wipe (lay it fresh: an EMPTY ledger and a NEW signing key every estate must be fed again)"
kind = "text"
required = false
boot_param = "korp.reinstall"
[[build.installer.params]]
name = "install_then"
label = "After INSTALL-OK: reboot (a person at the box) | poweroff (a cloud re-image tool detaches the medium)"
kind = "text"
required = false
boot_param = "korp.install.then"
[[build.installer.params]]
name = "pairing_seed"
label = "Pairing seed (nordisk-pairing seed.toml: estate, front, installer CA, bootstrap cert+key)"
kind = "text"
required = false
staged_file = "pairing/seed.toml"
[[build.installer.params]]
name = "clock"
label = "The box's clock sources (estate-clock ESTATE_CLOCK: https://…,https://… on the cloud; the bench's https://10.0.2.100:<port>/ on a mock). The ONE box has no front to follow: unset, it keeps whatever clock it booted with"
kind = "text"
required = false
boot_param = "korp.env.ESTATE_CLOCK"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_HOTPLUG_PCI"
value = "y"
reason = "the hot-plug core: gunnar's front medium's kernel row, kept so the donor's fragment is the fronts' own"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_HOTPLUG_PCI_ACPI"
value = "y"
reason = "acpiphp: the firmware-driven eject path (the fronts' kernel row)"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_PCIEPORTBUS"
value = "y"
reason = "binds the PCIe root ports (the fronts' kernel row)"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_HOTPLUG_PCI_PCIE"
value = "y"
reason = "pciehp: native PCIe hot-plug (the fronts' kernel row)"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_HOTPLUG_PCI_SHPC"
value = "y"
reason = "shpchp: a conventional pci-bridge slot (the fronts' kernel row)"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_PCI_MSI"
value = "y"
reason = "MSI, without which pciehp is dead (the fronts' kernel row)"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_HYPERVISOR_GUEST"
value = "y"
reason = "the gate of every paravirt guest feature: without it the wall clock is the emulated CMOS, and a passkey ceremony and a signed call are both judged by the clock"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_PARAVIRT"
value = "y"
reason = "the paravirt op vectors kvmclock installs itself through"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_KVM_GUEST"
value = "y"
reason = "kvmclock's guest half"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_PARAVIRT_CLOCK"
value = "y"
reason = "the paravirt clocksource: every SSHSIG call carries its time and is refused outside the skew window"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_NET"
value = "y"
reason = "the box serves HTTPS and dials every estate's monetize: no network stack, no socket"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_INET"
value = "y"
reason = "IPv4, and the installer link's outer UDP"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_NETDEVICES"
value = "y"
reason = "the virtio NICs"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_NET_CORE"
value = "y"
reason = "the network device core"
[[build.installer.requires]]
edge = "kernel"
surface = "kconfig"
symbol = "CONFIG_TUN"
value = "y"
reason = "boringtun, the userspace WireGuard of the installer's link, opens /dev/net/tun"
[[build.web_app]]
name = "monetize-ui-web"
out_dir = "crates/monetize-ui-web/dist"
index = "crates/monetize-ui-web/index.html"
[build.toolchain]
image = "nordisk-cargo-toolchain"
image_sha256 = "86d575e874677da3eb9aff3ba6e38ca600781ee9b7948a9df43ef89a6213c762"
rust_version = "1.97.1"
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl",
"wasm32-unknown-unknown",
"x86_64-unknown-uefi",
]
timeout_secs = 3600
mem_limit_mb = 8192
cpus = 8
siblings = [
"Skidbladnir",
"draupnir",
"edda",
"facett",
"funnel-core",
"holger",
"holger-ui",
"knut",
"korp-collectors",
"modgunn",
"nornir",
"openzl-sys-rs",
"skade",
"tunnr",
"znippy",
"znippy-zoomies",
]