diff --git a/iso/build-profile/airootfs/etc/calamares/modules/shellprocess-striplive.conf b/iso/build-profile/airootfs/etc/calamares/modules/shellprocess-striplive.conf index fe4e890..28802d8 100644 --- a/iso/build-profile/airootfs/etc/calamares/modules/shellprocess-striplive.conf +++ b/iso/build-profile/airootfs/etc/calamares/modules/shellprocess-striplive.conf @@ -9,3 +9,4 @@ script: - "rm -f /root/.zprofile" - "rm -f /usr/local/bin/tanin-installer" - "systemctl set-default graphical.target" +- "systemctl disable seatd.service" diff --git a/iso/build-profile/airootfs/root/customize_airootfs.sh b/iso/build-profile/airootfs/root/customize_airootfs.sh index 0ddc3e5..38d80c8 100755 --- a/iso/build-profile/airootfs/root/customize_airootfs.sh +++ b/iso/build-profile/airootfs/root/customize_airootfs.sh @@ -14,6 +14,9 @@ pacman-key --lsign-key 63F0415879323F6BFE0FBFB2B6FDF356206AF4F6 # --- services in the LIVE image --- systemctl enable NetworkManager.service +# seat manager for cage (the getty-autologin root session has no logind seat). +systemctl enable seatd.service +gpasswd -a root seat 2>/dev/null || true # Live boots to a console on tty1 that auto-launches the installer (cage + # calamares) via getty autologin + /root/.bash_profile. No display-manager. systemctl set-default multi-user.target diff --git a/iso/build-profile/packages.x86_64 b/iso/build-profile/packages.x86_64 index 04981a1..5b6d0bb 100644 --- a/iso/build-profile/packages.x86_64 +++ b/iso/build-profile/packages.x86_64 @@ -151,6 +151,11 @@ plymouth # (rebuild via finish-tanin-repo.sh / the calamares one-liner in BUILD.md). cage calamares +# seatd: cage/wlroots needs a seat; the getty-autologin has no logind seat, so +# run seatd (disabled on the target — greetd uses logind there). +seatd +# qt6-wayland: calamares (Qt) needs the wayland platform plugin to run under cage +qt6-wayland # resolve provider prompts non-interactively (mkarchiso can't answer them): # audio -> pipewire's JACK (matches the pipewire stack); netfilter -> iptables(-nft) diff --git a/iso/out/taninux-2026.06.20-x86_64.iso b/iso/out/taninux-2026.06.20-x86_64.iso index ed0e8f0..6a9949e 100644 Binary files a/iso/out/taninux-2026.06.20-x86_64.iso and b/iso/out/taninux-2026.06.20-x86_64.iso differ diff --git a/iso/overrides/airootfs/etc/calamares/modules/shellprocess-striplive.conf b/iso/overrides/airootfs/etc/calamares/modules/shellprocess-striplive.conf index 28802d8..4e24f68 100644 --- a/iso/overrides/airootfs/etc/calamares/modules/shellprocess-striplive.conf +++ b/iso/overrides/airootfs/etc/calamares/modules/shellprocess-striplive.conf @@ -1,12 +1,13 @@ --- dontChroot: false timeout: 30 -# Remove the live-only installer bits from the installed target so it boots the -# desktop (greetd) instead of auto-launching Calamares. +# Turn the cloned live image into a normal installed system: +# - drop the live installer launcher +# - restore the greetd config to the tanin-greet greeter (the live used an +# initial_session that auto-ran Calamares) +# - boot to the desktop; seatd is live-only (greetd uses logind on the target) script: -- "rm -f /etc/systemd/system/getty@tty1.service.d/autologin.conf" -- "rmdir --ignore-fail-on-non-empty /etc/systemd/system/getty@tty1.service.d 2>/dev/null || true" -- "rm -f /root/.zprofile" - "rm -f /usr/local/bin/tanin-installer" +- "install -Dm644 /usr/share/tanin/greetd/config.toml /etc/greetd/config.toml" - "systemctl set-default graphical.target" - "systemctl disable seatd.service" diff --git a/iso/overrides/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/iso/overrides/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf deleted file mode 100644 index 280039b..0000000 --- a/iso/overrides/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Service] -ExecStart= -ExecStart=-/usr/bin/agetty --autologin root --noclear %I 38400 linux diff --git a/iso/overrides/airootfs/root/.zprofile b/iso/overrides/airootfs/root/.zprofile deleted file mode 100644 index d81920a..0000000 --- a/iso/overrides/airootfs/root/.zprofile +++ /dev/null @@ -1,5 +0,0 @@ -# Live ISO: auto-launch the TANINUX installer on the first console. -# (Removed from the installed target by Calamares' shellprocess-striplive.) -if [[ "$(tty)" == /dev/tty1 ]] && [[ -z "$WAYLAND_DISPLAY" ]] && ! pgrep -x cage >/dev/null 2>&1; then - exec tanin-installer -fi diff --git a/iso/overrides/airootfs/root/customize_airootfs.sh b/iso/overrides/airootfs/root/customize_airootfs.sh index 38d80c8..9cdd448 100755 --- a/iso/overrides/airootfs/root/customize_airootfs.sh +++ b/iso/overrides/airootfs/root/customize_airootfs.sh @@ -14,14 +14,27 @@ pacman-key --lsign-key 63F0415879323F6BFE0FBFB2B6FDF356206AF4F6 # --- services in the LIVE image --- systemctl enable NetworkManager.service -# seat manager for cage (the getty-autologin root session has no logind seat). systemctl enable seatd.service -gpasswd -a root seat 2>/dev/null || true -# Live boots to a console on tty1 that auto-launches the installer (cage + -# calamares) via getty autologin + /root/.bash_profile. No display-manager. -systemctl set-default multi-user.target -# greetd is for the TARGET only (Calamares enables it post-install). -systemctl disable greetd.service 2>/dev/null || true + +# Live: greetd auto-launches the installer (cage + calamares) via initial_session. +# greetd creates a real logind session WITH A SEAT (the getty-autologin couldn't), +# so cage/wlroots starts. No login prompt — the installer comes up directly. +# (The tanin-greet package set config.toml to its greeter; we override it here for +# the live, and Calamares restores the tanin-greet config on the target.) +cat > /etc/greetd/config.toml <<'GEOF' +[terminal] +vt = 1 + +[initial_session] +command = "cage -s -- calamares" +user = "root" + +[default_session] +command = "agreety --cmd /bin/zsh" +user = "greeter" +GEOF +systemctl enable greetd.service +systemctl set-default graphical.target # --- plymouth: add the hook so the target initramfs shows the splash --- # (Calamares regenerates the initramfs on the target; this drop-in is carried