From 2524a017e17bd070d19dd8656dcd5ca7e0b0b8a1 Mon Sep 17 00:00:00 2001 From: Roland Date: Sun, 24 May 2026 12:30:09 -0600 Subject: [PATCH] Adding Calamares as the graphical installer. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pulls in `calamares` + `calamares-settings-debian` (the upstream Debian theme/config package). Calamares runs from the desktop via the "Install WROLPi to disk" icon: pkexec elevates, the user types the wrolpi account password, the standard install wizard opens. The launcher is the upstream install-debian.desktop with Name and Comment rebranded to "Install WROLPi to disk" / "Install WROLPi onto this computer's internal drive". We keep the upstream install-debian wrapper script (it handles xhost + pkexec calamares correctly) and just override the visible labels. After the chroot creates the wrolpi user the hook copies the launcher to /home/wrolpi/Desktop/install-wrolpi.desktop and marks it executable so XFCE launches it without an "untrusted application" warning. Behaviour: Live USB boot XFCE autologs to wrolpi. Install icon visible. Click → polkit prompts → Calamares wizard. After install + reboot wrolpi-bootstrap.service sets up Postgres on /media/wrolpi/config/postgresql/, runs DB init, starts wrolpi-api / app / kiwix / controller. Two known phase-3 polish items deferred: - WROLPi branding for Calamares (logo, colors, slideshow); using stock Debian branding for now. - An orphan install-wrolpi.desktop icon survives on the installed system (Calamares removes calamares-settings-debian, taking install-debian with it, but not the copy in the user's home). A Calamares shellprocess will rm it in phase 3. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../config/hooks/normal/9999-wrolpi.hook.chroot | 12 ++++++++++++ .../usr/share/applications/install-debian.desktop | 13 +++++++++++++ .../config/package-lists/wrolpi.list.chroot | 2 ++ 3 files changed, 27 insertions(+) create mode 100644 debian-live-config/config/includes.chroot/usr/share/applications/install-debian.desktop 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 cd7d31ae..7c5534ba 100644 --- a/debian-live-config/config/hooks/normal/9999-wrolpi.hook.chroot +++ b/debian-live-config/config/hooks/normal/9999-wrolpi.hook.chroot @@ -206,6 +206,18 @@ autologin-user-timeout=0 autologin-session=xfce EOF +# Calamares launcher on the user's desktop. XFCE shows .desktop files +# 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). +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 +chown -R wrolpi:wrolpi /home/wrolpi/Desktop + # Drop the default Postgres cluster created by the postgresql-* package. # wrolpi-bootstrap.service creates a fresh cluster on /media/wrolpi/config/postgresql # at first boot regardless of deployment shape; the cluster files installed diff --git a/debian-live-config/config/includes.chroot/usr/share/applications/install-debian.desktop b/debian-live-config/config/includes.chroot/usr/share/applications/install-debian.desktop new file mode 100644 index 00000000..0049c045 --- /dev/null +++ b/debian-live-config/config/includes.chroot/usr/share/applications/install-debian.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Install WROLPi to disk +GenericName=Calamares Installer +Exec=install-debian +Comment=Install WROLPi onto this computer's internal drive +Keywords=calamares;system;install;wrolpi; +Icon=install-debian +Terminal=false +Categories=Qt;System; +StartupWMClass=calamares +StartupNotify=True diff --git a/debian-live-config/config/package-lists/wrolpi.list.chroot b/debian-live-config/config/package-lists/wrolpi.list.chroot index 492ca923..f4b179d4 100644 --- a/debian-live-config/config/package-lists/wrolpi.list.chroot +++ b/debian-live-config/config/package-lists/wrolpi.list.chroot @@ -5,6 +5,8 @@ bind9-dnsutils build-essential bzip2 ca-certificates +calamares +calamares-settings-debian calibre cargo catdoc