Gunnar

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",
]