ce5d8de7ad
- 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>
4.5 KiB
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 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.)
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.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.