| 1 |
# What fw12's ROLE needs, as opposed to which dials its mint sets. |
| 2 |
# |
| 3 |
# fw12 is fw13's portable mirror (2026-09-07). The recipes say what goes in and |
| 4 |
# this says what has to come out, and the point of having both is that every |
| 5 |
# dial was correct on fw13 on 2026-09-04 while the image still could not build |
| 6 |
# a Tauri app or restore a prod dump, because nothing anywhere said those were |
| 7 |
# things the machine has to be able to do. |
| 8 |
# |
| 9 |
# THIS FILE IS DELIBERATELY fw13's, MINUS NOTHING. That is the mirror stated as |
| 10 |
# an assertion rather than as an intention: if the two recipes drift, the mint |
| 11 |
# that lost a capability fails its preflight instead of booting and |
| 12 |
# disappointing somebody a week later on a train. Where fw12 genuinely differs |
| 13 |
# from fw13 it is identity and hardware, and neither is a capability, so |
| 14 |
# neither belongs here. |
| 15 |
# |
| 16 |
# The one thing fw13 has that this does not assert is a role rather than a |
| 17 |
# capability: fw13 is Sando's controller and the crates.io publish host because |
| 18 |
# it is always on. fw12 can do both and is not asked to. |
| 19 |
# |
| 20 |
# Syntax: bin:<name>, pkgconfig:<module>, file:<glob>. |
| 21 |
|
| 22 |
# --- the tree's own builds |
| 23 |
bin:cargo |
| 24 |
bin:rustc |
| 25 |
bin:gcc # arrives with rust; a mint without it has no C toolchain |
| 26 |
bin:git # the publish recipe runs `git describe --exact-match` |
| 27 |
|
| 28 |
# --- an arbitrary checkout, which is what the `c` dial is for. Named because |
| 29 |
# the compilers and the build systems are the whole of what that dial promises, |
| 30 |
# and a promise nothing checks is one that quietly stops being true. |
| 31 |
bin:g++ |
| 32 |
bin:make |
| 33 |
bin:cmake |
| 34 |
bin:meson |
| 35 |
|
| 36 |
# --- Go, blessed 2026-09-07 for Make Creative software where it is warranted. |
| 37 |
bin:go |
| 38 |
|
| 39 |
# --- the frontends Sando's code_smoke gate compiles |
| 40 |
bin:node |
| 41 |
bin:npm |
| 42 |
|
| 43 |
# --- a restored production dump, same as fw13. The extensions are not |
| 44 |
# optional: a restore stops at the first CREATE EXTENSION it cannot satisfy. |
| 45 |
bin:psql |
| 46 |
bin:postgres |
| 47 |
bin:initdb |
| 48 |
file:*/pgcrypto.control |
| 49 |
file:*/pg_trgm.control |
| 50 |
|
| 51 |
# --- the four Tauri apps. webkit2gtk is the one that matters; the rest are |
| 52 |
# what cargo-tauri and linuxdeploy reach for. openssl is here for a second |
| 53 |
# reason worth naming: sccache links it, and on a fw12 without this dial |
| 54 |
# `cargo install sccache` failed and took four other recorded tools with it. |
| 55 |
pkgconfig:webkit2gtk-4.1 |
| 56 |
pkgconfig:gtk+-3.0 |
| 57 |
pkgconfig:libsoup-3.0 |
| 58 |
pkgconfig:librsvg-2.0 |
| 59 |
pkgconfig:openssl |
| 60 |
|
| 61 |
# --- the fleet control plane. ops-exec spawns the binary by name, so a machine |
| 62 |
# without it cannot collect a build from another host or hand a release over. |
| 63 |
bin:rsync |
| 64 |
bin:ssh |
| 65 |
|
| 66 |
# --- release signing. dist/sign-artifacts.sh hard-fails without minisign, and |
| 67 |
# the key material is a $HOME restore rather than image content, so the binary |
| 68 |
# is the part an image can be asked for. |
| 69 |
bin:minisign |
| 70 |
|
| 71 |
# --- secrets. _private keeps its .env-shaped files under sops and its opaque |
| 72 |
# blobs, minisign's own signing key included, as whole-file .age. Without the |
| 73 |
# binary a machine holds ciphertext it cannot open, and nothing says so until |
| 74 |
# somebody needs a key. The identity itself is copied by hand and stays out of |
| 75 |
# the image. |
| 76 |
bin:age |
| 77 |
|