ac9b94b0b2
- Calamares modules: unpackfs (clone), partition/mount/fstab (btrfs subvols), bootloader (systemd-boot + quiet splash), packages (strip live), services (greetd), shellprocess (snapper, flathub, strip-live), branding (Fuji) - bootstrap-profile.sh: releng base + linux-zen swap + overlay our deltas - BUILD.md: build steps, decisions, and honest open items (needs build-test) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
TANINUX (camel) — ISO build
archiso profile for a live + Calamares installer ISO. Model: the live ISO
is the installable system; Calamares clones it to disk (unpackfs), then
configures systemd-boot, Btrfs, services and strips the live-only bits.
Decisions baked in
- Kernel: linux-zen
- Bootloader (target): systemd-boot (the ISO itself boots systemd-boot/syslinux)
- Filesystem: Btrfs + snapper/snap-pac snapshots (subvol layout:
@,@home,@cache,@log,@snapshots) - Splash: Plymouth (
quiet splash, plymouth mkinitcpio hook) - Login: greetd + tanin-greet (enabled on the target by Calamares)
- Preinstalled: the whole
tanin-desktop+ firefox, thunderbird, kitty, nautilus, flatpak(+Flathub), mpv, loupe, GStreamer codecs, noto fonts/emoji/cjk, file-roller, paru* - Repo:
[tanin](Gitea Arch registry), DB-signing key trusted in the keyring
Prerequisites
sudo pacman -S archiso # to build
[tanin]must be complete & reachable (it is: git.openbureau.ch). The build pacman.conf pullstanin-desktop+ deps from it (SigLevel=Never at build time).- *paru is AUR → it must be rebuilt into
[tanin]before enabling it inoverrides/packages.x86_64(currently commented out), or the build fails. (Rebuild like eww-git:paru-binvia makepkg →publish-tanin-repo.sh.)
Build
./bootstrap-profile.sh # assemble build-profile/ (releng base + overrides)
./bootstrap-profile.sh --build # assemble + mkarchiso -> out/
# or manually:
sudo mkarchiso -v -w /tmp/tanin-work -o out build-profile
How it fits together
overrides/holds only our deltas;bootstrap-profile.shcopies the canonicalrelengprofile and overlays them (so bootloader/mkinitcpio boilerplate stays authoritative; it also swaps the live kernellinux→linux-zen).overrides/pacman.conf— build-time (adds[tanin], SigLevel=Never).overrides/airootfs/etc/pacman.conf— live + target ([tanin]Optional TrustAll; the key is imported bycustomize_airootfs.sh).overrides/airootfs/root/customize_airootfs.sh— locale, import[tanin]key, enable NetworkManager, plymouth hook, live boots to the installer.- Live boot: getty autologin on tty1 →
/root/.bash_profile→tanin-installer→cage -s -- calamares. - Calamares (
airootfs/etc/calamares/):unpackfsclone → btrfs subvols (mount.conf) → systemd-boot (bootloader.conf) → snapper + Flathub (shellprocess) → enable greetd + strip live bits → done.
⚠️ Open items / needs real build-testing (can't validate without mkarchiso+root)
- Calamares end-to-end — the sequence/module configs are a solid starting point but UNTESTED; expect to iterate (esp. partition/mount/bootloader on real hardware + UEFI).
- snapper on Btrfs —
create-configcan conflict with the pre-created/.snapshotssubvol; the shellprocess is tolerant (|| true) but verify snapshots actually work (snap-pac before/after pacman). - systemd-boot + snapshots — no boot-menu snapshot entries (unlike grub-btrfs);
rollback is via
snapper rollbackfrom a recovery, not the boot menu. - live-vs-target divergence —
shellprocess-stripliveremoves the live autologin/installer on the target; verify the target boots to greetd, not Calamares. - Plymouth — a custom Fuji theme isn't shipped yet (uses the default). Add a
tanin-plymouththeme later. - Calamares branding — no logo/slideshow assets yet (text-only); add
logo.pngshow.qmlunderbranding/tanin/for polish.
- paru — rebuild into
[tanin], then uncomment inpackages.x86_64. - [tanin] key in the live keyring —
customize_airootfs.shimports it; confirmpacman -Syworks inside the live env and that Calamares' target pacman trusts it.