rpi-provision Declarative first-boot provisioning for Raspberry Pi 5 SD cards Source on GitHub

Design decisions

Three choices shape everything else in this tool, and each of them cost something. They are recorded here with the context that produced them, so that a later reader can tell whether the reasoning still holds.

Record Decision Why it matters
0001 The workspace carries no external dependencies The build needs nothing but a Rust toolchain โ€” no openssl-sys, no vendored C, no network. The cost is a hand-written TOML parser, SHA-256, line diff and argument parser
0002 Write only to the FAT boot partition The ext4 root filesystem is never mounted, so Linux and Windows are equal footing and nothing needs elevation. The cost is that everything has to be deferred to a first-boot script
0003 The desktop application is a workspace of its own A window needs a toolkit, and a toolkit needs hundreds of crates. Keeping it out of the main workspace is what lets 0001 stand. The cost is two lock files and a second CI job

Each record follows the same shape: context, decision, consequences, alternatives considered, and the conditions under which it should be revisited.