Files
taninux/iso/BUILD.md
T
karim ce5d8de7ad iso: calamares from [tanin] (AUR rebuild); document the build step
- packages.x86_64: calamares enabled (served from [tanin])
- finish/build-tanin-repo.sh: add calamares to the AUR rebuild list
- BUILD.md + manifest: calamares rebuild step + status

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 01:29:54 +02:00

4.5 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 pulls tanin-desktop + deps from it (SigLevel=Never at build time).
  • *paru is AUR → it must be rebuilt into [tanin] before enabling it in overrides/packages.x86_64 (currently commented out), or the build fails. (Rebuild like eww-git: paru-bin via makepkg → publish-tanin-repo.sh.)

First: put calamares (and the other AUR rebuilds) into [tanin]

calamares is AUR-only, so mkarchiso can't pull it from the official repos — it must live in [tanin]. Heavy Qt build (installs makedepends via sudo):

cd /tmp && rm -rf calamares && git clone https://aur.archlinux.org/calamares.git
cd calamares && makepkg -sf --noconfirm
cp ./*.pkg.tar.zst ~/projects/tanin-repo/
# publish (create a write:package token in Gitea → Settings → Applications):
TANIN_PKG_TOKEN=<token> ~/projects/taninux/packaging/publish-tanin-repo.sh

(If the AUR calamares lags a Qt bump, try calamares-git, or fall back to archinstall — already in the live base.)

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.sh copies the canonical releng profile and overlays them (so bootloader/mkinitcpio boilerplate stays authoritative; it also swaps the live kernel linuxlinux-zen).
  • overrides/pacman.confbuild-time (adds [tanin], SigLevel=Never).
  • overrides/airootfs/etc/pacman.conflive + target ([tanin] Optional TrustAll; the key is imported by customize_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_profiletanin-installercage -s -- calamares.
  • Calamares (airootfs/etc/calamares/): unpackfs clone → 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)

  1. 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).
  2. snapper on Btrfscreate-config can conflict with the pre-created /.snapshots subvol; the shellprocess is tolerant (|| true) but verify snapshots actually work (snap-pac before/after pacman).
  3. systemd-boot + snapshots — no boot-menu snapshot entries (unlike grub-btrfs); rollback is via snapper rollback from a recovery, not the boot menu.
  4. live-vs-target divergenceshellprocess-striplive removes the live autologin/installer on the target; verify the target boots to greetd, not Calamares.
  5. Plymouth — a custom Fuji theme isn't shipped yet (uses the default). Add a tanin-plymouth theme later.
  6. Calamares branding — no logo/slideshow assets yet (text-only); add logo.png
    • show.qml under branding/tanin/ for polish.
  7. paru — rebuild into [tanin], then uncomment in packages.x86_64.
  8. [tanin] key in the live keyringcustomize_airootfs.sh imports it; confirm pacman -Sy works inside the live env and that Calamares' target pacman trusts it.