| 1 |
# What fw13's ROLE needs, as opposed to which dials its mint sets. |
| 2 |
# |
| 3 |
# build/hosts/fw13.env says LANGS=rust,js DB=postgres16 GUI=tauri. That is the |
| 4 |
# input. This file is the output: the capabilities that have to exist on the |
| 5 |
# other side, checked by build/preflight.sh against what those dials install. |
| 6 |
# |
| 7 |
# The distinction is the whole point. Every dial was set correctly on 2026-09-04 |
| 8 |
# and the image still could not build a Tauri app or restore a prod dump, because |
| 9 |
# nothing anywhere said those were things fw13 has to be able to do. |
| 10 |
# |
| 11 |
# Syntax: bin:<name>, pkgconfig:<module>, file:<glob>. |
| 12 |
|
| 13 |
# Four roles ride on this machine (see fw13.env): Bento's x86_64 builder, Bento's |
| 14 |
# controller for astra/mbp/windows-x86, the crates.io publish host, and Sando's |
| 15 |
# controller with the PostgreSQL its gates restore into. |
| 16 |
|
| 17 |
# --- the tree's own builds |
| 18 |
bin:cargo |
| 19 |
bin:rustc |
| 20 |
bin:gcc # arrives with rust; a mint without it has no C toolchain |
| 21 |
bin:git # the publish recipe runs `git describe --exact-match` |
| 22 |
|
| 23 |
# --- Go, blessed 2026-09-07 for Make Creative software where it is warranted. |
| 24 |
# Asserted before anything in the tree is Go, deliberately: a blessing that the |
| 25 |
# build hosts cannot honour is one somebody discovers at the wrong moment. |
| 26 |
bin:go |
| 27 |
|
| 28 |
# --- Sando's code_smoke gate builds two TypeScript frontends |
| 29 |
bin:node |
| 30 |
bin:npm |
| 31 |
|
| 32 |
# --- Sando's migration_check and cargo_test restore a prod dump over a socket. |
| 33 |
# The extensions are not optional: a restore stops at the first CREATE EXTENSION |
| 34 |
# it cannot satisfy. Measured against /srv/sando/backups on 2026-09-04 — the |
| 35 |
# server dump declares pgcrypto and pg_trgm, the multithreaded one pg_trgm. |
| 36 |
bin:psql |
| 37 |
bin:postgres |
| 38 |
bin:initdb |
| 39 |
file:*/pgcrypto.control |
| 40 |
file:*/pg_trgm.control |
| 41 |
|
| 42 |
# --- the four Tauri apps. webkit2gtk is the one that matters; the rest are what |
| 43 |
# cargo-tauri and linuxdeploy reach for. No Alloy image shipped any of them until |
| 44 |
# the GUI dial existed. |
| 45 |
pkgconfig:webkit2gtk-4.1 |
| 46 |
pkgconfig:gtk+-3.0 |
| 47 |
pkgconfig:libsoup-3.0 |
| 48 |
pkgconfig:librsvg-2.0 |
| 49 |
pkgconfig:openssl |
| 50 |
|
| 51 |
# --- the fleet control plane. ops-exec spawns the binary by name, so a machine |
| 52 |
# without it cannot collect a build from another host or hand a release over. |
| 53 |
bin:rsync |
| 54 |
bin:ssh |
| 55 |
|
| 56 |
# --- release signing. Both Linux recipes call dist/sign-artifacts.sh, which |
| 57 |
# hard-fails without minisign, and the key material is a $HOME restore rather |
| 58 |
# than image content — so the binary is the part an image can be asked for. |
| 59 |
bin:minisign |
| 60 |
|
| 61 |
# --- secrets. _private keeps its .env-shaped files under sops and its opaque |
| 62 |
# blobs, minisign's own signing key included, as whole-file .age. Without the |
| 63 |
# binary a machine holds ciphertext it cannot open, and nothing says so until |
| 64 |
# somebody needs a key. The identity itself is copied by hand and stays out of |
| 65 |
# the image. |
| 66 |
bin:age |
| 67 |
|