Skip to main content

max / alloy

5.3 KB · 103 lines History Blame Raw
1 # fw12 — Framework 12, Intel. The portable half of a two-machine pair.
2 #
3 # RECLASSIFIED 2026-09-07 (Max): "Lets stop treating fw12 as a minimal testbed
4 # and plan to have it essentially mirror fw13. fw13 is probably going to be a
5 # stay at home machine for awhile, always on. fw12 is the better portable
6 # machine, but ideally is a near mirror image."
7 #
8 # So the dials below are fw13's, and that is the whole design of this file now.
9 # Where the two differ it is identity and hardware, never capability. If fw13
10 # gains a dial, this file gains it in the same commit; a divergence here is a
11 # bug rather than a choice, and build/hosts/fw12.requires is what catches one.
12 #
13 # WHAT THIS FILE USED TO BE, said plainly because two earlier headers argued
14 # for it. fw12 was the stock client mint, the machine that proved what an
15 # ordinary person installs, and it set no dial on purpose. That reading died in
16 # two steps on the same day: first because Alloy is an operating system for
17 # developers, so an empty-LANGS mint is the unusual install rather than the
18 # representative one, and then because the pair is not one daily driver and one
19 # testbed. It is a desk machine and a machine that leaves the house, and the
20 # only thing a person carrying the portable one wants is for it to be the
21 # machine they left.
22 #
23 # Nothing now proves the bare mint on hardware. That is accepted: the property
24 # it demonstrated is that the image boots and is usable with nothing added, and
25 # a VM answers that as well as a laptop does.
26 #
27 # The cost of the mirror is size and build time, both paid at mint. fw12 now
28 # carries the Tauri GUI set, PostgreSQL 16 and four language toolchains it
29 # would not have asked for as a testbed.
30 #
31 # What it also sets is identity, and only because the alternative is a chore.
32 # fw12 gets reinstalled every time the image moves far enough to be worth
33 # re-proving, and a machine that needs a person at the keyboard to become
34 # reachable afterwards is how the last round of hardware verification turned
35 # into eighteen tasks nobody could run.
36
37 # avahi publishes fw12.local and NetworkManager sends the same name in DHCP
38 # option 12, so the machine is reachable by name from fw13 the moment it boots.
39 # The installer's default hostname follows this, so an install nobody retypes
40 # still lands on the right name.
41 ALLOY_HOSTNAME=fw12
42
43 # THE DIALS, mirrored from build/hosts/fw13.env. Read that file for what each
44 # one costs; the reasons are the same reasons and are not restated here.
45 #
46 # LANGS. rust is what the tree is written in and is also what puts a C
47 # toolchain on the machine: a stock fedora-bootc mint has glibc and not
48 # glibc-devel, so without it cargo dies at `error: linker cc not found`. c adds
49 # the compilers and build systems for an arbitrary checkout. js builds MNW's
50 # frontends. go is blessed for Make Creative software where it is warranted.
51 LANGS=rust,c,js,go
52
53 # GUI. The Tauri build set: webkit2gtk, gtk3, libsoup3, librsvg and openssl,
54 # all as -devel. Without it this machine cannot build goingson,
55 # balanced_breakfast or audiofiles.
56 #
57 # It is also what carries openssl-devel, and that is worth knowing rather than
58 # rediscovering: measured 2026-09-07 on a fw12 with LANGS=rust,c,go and no GUI
59 # dial, `cargo install sccache` failed at `Package openssl was not found in the
60 # pkg-config search path` and took four of the eleven recorded tools with it.
61 # fw13 and astra never saw that because their GUI dial had been supplying the
62 # header all along.
63 GUI=tauri
64
65 # DB. PostgreSQL 16 binaries and no cluster, matching fw13. The major matters:
66 # it is what production runs and what a restored dump expects.
67 DB=postgres16
68
69 # fw13's public key, read at mint time rather than committed: this repo is
70 # public, and a key pasted into it would also go stale silently. The installer
71 # seeds its account step from the baked key, so a reinstalled fw12 comes up
72 # with fw13 already able to log in, with nothing typed at the machine.
73 ALLOY_SSH_KEY=@~/.ssh/id_ed25519.pub
74
75 # The install questions the recipe answers, so a reinstall stops being five
76 # screens of retyping what this file already knows. Read by the installer from
77 # /usr/lib/alloy/answers.toml; see docs/IMAGE.md, "Per-machine mint recipes".
78 #
79 # The account and the passphrase are still asked, and that is deliberate rather
80 # than unfinished: a secret written here would be in every layer cache and on
81 # every stick. What is left to type is one password and one passphrase.
82 ALLOY_USERNAME=max
83
84 # A rule, never a device path. If fw12 ever comes back with something other
85 # than one internal NVMe in it, this stops matching and the installer asks
86 # instead of erasing whatever it found.
87 ALLOY_DISK=single-internal-nvme
88
89 # Encrypted, per the standing posture for a laptop that leaves the house. This
90 # answers the checkbox only; the passphrase is typed at the machine.
91 ALLOY_ENCRYPT=yes
92
93 # No. The lookup sends this machine's address to a third party, and a machine
94 # that comes up UTC can be fixed in `alloy settings` in a second.
95 ALLOY_LOCATE_TIMEZONE=no
96
97 # Where `bootc upgrade` fetches from. fw13 serves this tag out of the registry
98 # build/dev-push.sh publishes to, so a fix reaches fw12 over the LAN without a
99 # second medium. Without this key the installer writes the compiled-in public
100 # registry, which does not exist yet, and leaves the update timer disabled: a
101 # machine that cannot be fixed except by typing `bootc switch` at it.
102 UPDATE_TARGET=fw13:5000/alloy:local
103