From 0f3ed4f3460227065db689f798a0cf1087c39cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Mon, 6 Jul 2026 22:59:57 +0200 Subject: [PATCH] fix: replace broken services-artix/postcfg modules with shellprocess services-artix and postcfg Calamares modules don't exist in upstream Calamares (they're Garuda/Artix fork patches). Our custom Calamares builds from pure upstream, so these steps get silently skipped during installation, leaving NO services enabled in the installed system. Replace them with shellprocess@enable-services, which uses the built-in shellprocess module to run a post-install script that: - Detects the init system (dinit/openrc/runit/s6) - Enables all system services via boot.d symlinks or equivalent - Sets up user services (pipewire, wireplumber) for the created user Affects both online and offline installer settings. --- .../modules/enable-services.conf | 5 ++ .../etc/calamares-offline/settings.conf | 8 +- .../modules/enable-services.conf | 5 ++ .../etc/calamares-online/settings.conf | 6 +- .../calamares/modules/enable-services.conf | 5 ++ .../usr/local/bin/enable-services.sh | 88 +++++++++++++++++++ 6 files changed, 113 insertions(+), 4 deletions(-) create mode 100644 iso-profiles/antergos/live-overlay/etc/calamares-offline/modules/enable-services.conf create mode 100644 iso-profiles/antergos/live-overlay/etc/calamares-online/modules/enable-services.conf create mode 100644 iso-profiles/antergos/live-overlay/etc/calamares/modules/enable-services.conf create mode 100755 iso-profiles/antergos/live-overlay/usr/local/bin/enable-services.sh diff --git a/iso-profiles/antergos/live-overlay/etc/calamares-offline/modules/enable-services.conf b/iso-profiles/antergos/live-overlay/etc/calamares-offline/modules/enable-services.conf new file mode 100644 index 0000000..cb9b332 --- /dev/null +++ b/iso-profiles/antergos/live-overlay/etc/calamares-offline/modules/enable-services.conf @@ -0,0 +1,5 @@ +--- +dontChroot: true +timeout: 60 +script: + - "-/usr/local/bin/enable-services.sh ${USER} ${ROOT}" diff --git a/iso-profiles/antergos/live-overlay/etc/calamares-offline/settings.conf b/iso-profiles/antergos/live-overlay/etc/calamares-offline/settings.conf index 697386c..0996290 100644 --- a/iso-profiles/antergos/live-overlay/etc/calamares-offline/settings.conf +++ b/iso-profiles/antergos/live-overlay/etc/calamares-offline/settings.conf @@ -26,14 +26,18 @@ sequence: - displaymanager - networkcfg - hwclock - - services-artix + - shellprocess@enable-services - grubcfg - bootloader - - postcfg - umount - show: - finished +instances: +- id: enable-services + module: shellprocess + config: enable-services.conf + branding: antergos-next prompt-install: false diff --git a/iso-profiles/antergos/live-overlay/etc/calamares-online/modules/enable-services.conf b/iso-profiles/antergos/live-overlay/etc/calamares-online/modules/enable-services.conf new file mode 100644 index 0000000..cb9b332 --- /dev/null +++ b/iso-profiles/antergos/live-overlay/etc/calamares-online/modules/enable-services.conf @@ -0,0 +1,5 @@ +--- +dontChroot: true +timeout: 60 +script: + - "-/usr/local/bin/enable-services.sh ${USER} ${ROOT}" diff --git a/iso-profiles/antergos/live-overlay/etc/calamares-online/settings.conf b/iso-profiles/antergos/live-overlay/etc/calamares-online/settings.conf index d77fbb9..99a741f 100644 --- a/iso-profiles/antergos/live-overlay/etc/calamares-online/settings.conf +++ b/iso-profiles/antergos/live-overlay/etc/calamares-online/settings.conf @@ -30,10 +30,9 @@ sequence: - displaymanager - networkcfg - hwclock - - services-artix + - shellprocess@enable-services - grubcfg - bootloader - - postcfg - umount - show: - finished @@ -42,6 +41,9 @@ instances: - id: dm module: packagechooser config: packagechooser_dm.conf +- id: enable-services + module: shellprocess + config: enable-services.conf branding: antergos-next diff --git a/iso-profiles/antergos/live-overlay/etc/calamares/modules/enable-services.conf b/iso-profiles/antergos/live-overlay/etc/calamares/modules/enable-services.conf new file mode 100644 index 0000000..cb9b332 --- /dev/null +++ b/iso-profiles/antergos/live-overlay/etc/calamares/modules/enable-services.conf @@ -0,0 +1,5 @@ +--- +dontChroot: true +timeout: 60 +script: + - "-/usr/local/bin/enable-services.sh ${USER} ${ROOT}" diff --git a/iso-profiles/antergos/live-overlay/usr/local/bin/enable-services.sh b/iso-profiles/antergos/live-overlay/usr/local/bin/enable-services.sh new file mode 100755 index 0000000..98b7f90 --- /dev/null +++ b/iso-profiles/antergos/live-overlay/usr/local/bin/enable-services.sh @@ -0,0 +1,88 @@ +#!/usr/bin/bash + +set -e + +USERNAME="${1:-}" +ROOT="${2:-}" + +if [[ -z "$ROOT" ]]; then + ROOT="/" +fi + +chroot_run() { + chroot "$ROOT" "$@" +} + +svc_enable_dinit() { + for svc in NetworkManager acpid bluetoothd cronie cupsd dbus dhcpcd power-profiles-daemon sddm syslog-ng; do + if [[ -f "$ROOT/etc/dinit.d/$svc" ]]; then + chroot_run ln -sf /etc/dinit.d/"$svc" /etc/dinit.d/boot.d/"$svc" + fi + done + chroot_run ln -sf /usr/lib/dinit.d/dinit-user-spawn /etc/dinit.d/boot.d/ +} + +usr_svc_enable_dinit() { + local user="$1" + if [[ -z "$user" ]] || [[ ! -d "$ROOT/home/$user" ]]; then + return + fi + for svc in pipewire wireplumber; do + if [[ -f "$ROOT/etc/dinit.d/user/$svc" ]]; then + chroot_run mkdir -p "/home/$user/.config/dinit.d/boot.d" + chroot_run ln -sf "/etc/dinit.d/user/$svc" "/home/$user/.config/dinit.d/boot.d/$svc" + chroot_run chown -R "$user:$user" "/home/$user/.config/dinit.d" + fi + done +} + +svc_enable_openrc() { + for svc in NetworkManager acpid bluetoothd cronie cupsd dbus dhcpcd power-profiles-daemon sddm syslog-ng; do + if [[ -f "$ROOT/etc/init.d/$svc" ]]; then + chroot_run rc-update add "$svc" default + fi + done +} + +usr_svc_enable_openrc() { + local user="$1" + if [[ -z "$user" ]] || [[ ! -d "$ROOT/home/$user" ]]; then + return + fi + for svc in pipewire pipewire-pulse wireplumber; do + if [[ -f "$ROOT/etc/user/init.d/$svc" ]]; then + chroot_run mkdir -p "/home/$user/.config/rc/runlevels/default" + chroot_run ln -sf "/etc/user/init.d/$svc" "/home/$user/.config/rc/runlevels/default/$svc" + chroot_run chown -R "$user:$user" "/home/$user/.config/rc" + fi + done +} + +svc_enable_runit() { + for svc in NetworkManager acpid bluetoothd cronie cupsd dbus dhcpcd power-profiles-daemon sddm syslog-ng; do + if [[ -d "$ROOT/etc/runit/sv/$svc" ]]; then + chroot_run ln -sf /etc/runit/sv/"$svc" /etc/runit/runsvdir/default/"$svc" + fi + done +} + +svc_enable_s6() { + for svc in NetworkManager acpid bluetoothd cronie cupsd dbus dhcpcd power-profiles-daemon sddm syslog-ng; do + if [[ -d "$ROOT/etc/s6/sv/$svc" ]] || [[ -d "$ROOT/etc/s6/sv/${svc}-srv" ]]; then + chroot_run s6-service add default "$svc" + fi + done + chroot_run s6-db-reload -r +} + +if [[ -f "$ROOT/usr/bin/dinitctl" ]]; then + svc_enable_dinit + usr_svc_enable_dinit "$USERNAME" +elif [[ -f "$ROOT/usr/bin/rc-update" ]]; then + svc_enable_openrc + usr_svc_enable_openrc "$USERNAME" +elif [[ -f "$ROOT/usr/bin/runsvdir" ]]; then + svc_enable_runit +elif [[ -f "$ROOT/usr/bin/s6-service" ]]; then + svc_enable_s6 +fi