diff --git a/debian-live-config/README.md b/debian-live-config/README.md index c8036295..d2420555 100644 --- a/debian-live-config/README.md +++ b/debian-live-config/README.md @@ -53,10 +53,13 @@ the user's library so a drive moved between hosts keeps its full state: - [x] **Phase 1 — merged live + chroot config**: Single `debian-live-config/` produces a Debian Live ISO with the full WROLPi stack, XFCE auto-login as `wrolpi`, persistence partition created on first boot. -- [ ] **Phase 2 — Calamares installer**: Add `calamares` package and a - desktop launcher so users can install WROLPi to disk. -- [ ] **Phase 3 — branding + release**: WROLPi branding for Calamares, - CI on tag, hosting, wrolpi.org docs. +- [x] **Phase 2 — Calamares installer**: `calamares` package and a desktop + launcher. Users can install WROLPi to disk via the "Install WROLPi to + disk" icon on the desktop. +- [x] **Phase 3 — branding**: WROLPi product name, logo, colors applied + to the Calamares wizard via `etc/calamares/branding/wrolpi/`. Orphan + launcher cleaned up post-install by a Calamares shellprocess module. +- [ ] **Release**: CI on tag, hosting, wrolpi.org docs. ## References diff --git a/debian-live-config/config/hooks/normal/9999-wrolpi.hook.chroot b/debian-live-config/config/hooks/normal/9999-wrolpi.hook.chroot index 7c5534ba..c1b64f2f 100644 --- a/debian-live-config/config/hooks/normal/9999-wrolpi.hook.chroot +++ b/debian-live-config/config/hooks/normal/9999-wrolpi.hook.chroot @@ -210,9 +210,8 @@ EOF # placed in ~/Desktop; we use the upstream install-debian wrapper script # (pulled in by calamares-settings-debian) but rebrand the launcher entry. # Marked executable so XFCE will launch it without a "trusted application" -# warning. After install Calamares removes calamares-settings-debian, which -# takes install-debian with it; the orphan icon is cleaned up in a -# follow-up Calamares shellprocess (phase 3). +# warning. Cleanup of this file on the installed system is handled by +# the shellprocess Calamares module (see etc/calamares/modules/shellprocess.conf). mkdir -p /home/wrolpi/Desktop cp /usr/share/applications/install-debian.desktop /home/wrolpi/Desktop/install-wrolpi.desktop chmod +x /home/wrolpi/Desktop/install-wrolpi.desktop diff --git a/debian-live-config/config/includes.chroot/etc/calamares/branding/wrolpi/branding.desc b/debian-live-config/config/includes.chroot/etc/calamares/branding/wrolpi/branding.desc new file mode 100644 index 00000000..ac06a96f --- /dev/null +++ b/debian-live-config/config/includes.chroot/etc/calamares/branding/wrolpi/branding.desc @@ -0,0 +1,38 @@ +--- +componentName: wrolpi +welcomeStyleCalamares: true +welcomeExpandingLogo: true +windowExpanding: normal +windowSize: 800px,520px +windowPlacement: center + +strings: + productName: WROLPi + shortProductName: WROLPi + version: Debian 12 (bookworm) + shortVersion: 12 + versionedName: WROLPi on Debian 12 + shortVersionedName: WROLPi + bootloaderEntryName: WROLPi + productUrl: https://wrolpi.org + supportUrl: https://wrolpi.org + knownIssuesUrl: https://github.com/lrnselfreliance/wrolpi/issues + releaseNotesUrl: https://github.com/lrnselfreliance/wrolpi/releases + donateUrl: https://wrolpi.org + +images: + productLogo: "wrolpi-logo.png" + productIcon: "wrolpi-logo.png" + productWelcome: "wrolpi-logo.png" + +# Slideshow omitted — the upstream Debian slideshow doesn't ship with the +# WROLPi branding, and producing our own QML is deferred polish. Calamares +# falls back to a static welcome screen. + +style: + sidebarBackground: "#5d2961" + sidebarText: "#FFFFFF" + sidebarTextSelect: "#8d4d92" + sidebarTextHighlight: "#FFFFFF" + +slideshowAPI: 2 diff --git a/debian-live-config/config/includes.chroot/etc/calamares/branding/wrolpi/wrolpi-logo.png b/debian-live-config/config/includes.chroot/etc/calamares/branding/wrolpi/wrolpi-logo.png new file mode 100755 index 00000000..113cad1b Binary files /dev/null and b/debian-live-config/config/includes.chroot/etc/calamares/branding/wrolpi/wrolpi-logo.png differ diff --git a/debian-live-config/config/includes.chroot/etc/calamares/modules/shellprocess.conf b/debian-live-config/config/includes.chroot/etc/calamares/modules/shellprocess.conf new file mode 100644 index 00000000..014565da --- /dev/null +++ b/debian-live-config/config/includes.chroot/etc/calamares/modules/shellprocess.conf @@ -0,0 +1,13 @@ +--- +# Run inside the target system's chroot so paths refer to the installed +# /home/wrolpi, not the live system's. +dontChroot: false +timeout: 30 +script: + # Remove the orphan "Install WROLPi" launcher. Calamares removes the + # calamares-settings-debian package (taking the install-debian wrapper + # binary with it), but the copy we placed in the wrolpi user's Desktop + # directory is a plain file that apt doesn't track. Without this + # cleanup, the installed system shows an icon that fails when clicked + # because its Exec target no longer exists. + - "rm -f /home/wrolpi/Desktop/install-wrolpi.desktop" diff --git a/debian-live-config/config/includes.chroot/etc/calamares/settings.conf b/debian-live-config/config/includes.chroot/etc/calamares/settings.conf new file mode 100644 index 00000000..88a4aaca --- /dev/null +++ b/debian-live-config/config/includes.chroot/etc/calamares/settings.conf @@ -0,0 +1,68 @@ +# Configuration file for Calamares — WROLPi installer. +# +# Mostly mirrors the upstream calamares-settings-debian settings.conf; +# differences are: +# - branding: wrolpi (was: debian) +# - shellprocess inserted near the end of the exec phase to clean up the +# "Install WROLPi" desktop launcher we drop on the live user's desktop. +# Upstream's packages module already removes calamares-settings-debian +# (taking install-debian and the .desktop file in /usr/share/applications +# with it), but our copy in /home/wrolpi/Desktop/ is a plain file that +# apt doesn't know about and would otherwise survive as an orphan on +# the installed system. +--- + +modules-search: [ local, /usr/lib/calamares/modules ] + +oem-setup: false +disable-cancel: false +disable-cancel-during-exec: false +quit-at-end: false + +sequence: +- show: + - welcome + - locale + - keyboard + - partition + - users + - summary + +- exec: + - partition + - mount + - unpackfs + - dpkg-unsafe-io + - sources-media + - machineid + - fstab + - locale + - keyboard + - localecfg + - users + - displaymanager + - networkcfg + - hwclock + - services-systemd + - bootloader-config + - grubcfg + - bootloader + - packages + - luksbootkeyfile + - plymouthcfg + - initramfscfg + - initramfs + - dpkg-unsafe-io-undo + - sources-media-unmount + - sources-final + - shellprocess + - umount + +- show: + - finished + +branding: wrolpi + +prompt-install: false + +dont-chroot: false