Restores original callback (hardcoded False), pretty_status_message refactor,
umask pattern, known_inits name, unguarded operations access, and inline
subst_locale — all of which were changed in earlier CodeQL fix commits.
Keeps only harmless changes: unused import removal (sys, re), PEP8 comma
space, and _change_mode zero-division guard.
Adds large ASCII warning header: DO NOT EDIT without full ISO test.
- Guard _change_mode progress division against zero total_packages
- Document why -Syu is inappropriate in installer context (reproducibility)
- Promote known_inits to module-level KNOWN_INIT_PROVIDERS constant
basestrap module (from calamares-extensions) reads netinstallAdd only
for the init provider name (e.g. 'dinit') to add elogind-dinit. It
does NOT install the subgroup packages from the user's packagechooser
selection (networkmanager-dinit, pipewire-dinit, etc.). So these were
selected in the GUI but never present in the target system.
Since the netinstall view's packageOperations -> packages module flow
works correctly, move all required *-dinit service packages into the
netinstall.yaml Default group (online) and profile.yaml rootfs (offline).
Also revert settings.conf back to services-artix + postcfg — these
modules DO exist (from calamares-extensions) and work correctly when
the service packages are installed. Remove the unnecessary shellprocess
files that were added as a mistaken workaround.
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.
add_svc_dinit() in services.sh creates boot.d symlinks for each service
listed in live-session: services: — but only if the service file exists
at /etc/dinit.d/<name>. Without the -dinit packages installed in the
livefs, all services were silently skipped and the display manager
never started.
Add acpid-dinit, bluez-dinit, cronie-dinit, cups-dinit,
networkmanager-dinit, power-profiles-daemon-dinit, sddm-dinit,
syslog-ng-dinit, dbus-dinit, pipewire-dinit, wireplumber-dinit
- Plasma group in netinstall.yaml now includes antergos-plasma-theme,
antergos-next-desktop-settings, and full KDE app list from branding
- Default group adds networkmanager, pipewire, pipewire-pulse,
wireplumber, firefox, mesa for working network/audio out of the box
- Init chooser packagechooser.conf adds pipewire-dinit and
wireplumber-dinit services to all four init sections (dinit, openrc,
s6, runit) for audio service enablement
finished.conf was only in calamares-online/modules/ and
calamares-offline/modules/, not in calamares/modules/. When
settings.conf gets copied at runtime, Calamares looks for
modules at /etc/calamares/modules/finished.conf which didn't
exist, silently falling back to defaults with systemctl reboot
(broken on Artix).
OpenRC conflicts with dinit-rc over virtual init-rc. Runit and S6
use different virtuals so they're fine. OpenRC stays listed but
with a visible warning until a fix is found.
All approaches to keep OpenRC as default failed:
- --ignore: pacman ignores it during fresh install provider resolution
- --assume-installed=init-logind: ALPM doesn't check assume-installed for virtual providers
- --ask=12: infinite loop (pacman re-adds elogind-dinit after each removal)
- dummy package in custom repo: init-rc conflict hits via different path
Dinit works because pacman --noconfirm naturally picks elogind-dinit
(alphabetically before elogind-openrc), pulling dinit-rc which has no
conflict. All inits (OpenRC, Runit, S6) remain selectable in the
online installer.
Changes:
- buildiso: INITSYS='dinit', remove --assume-installed/--ask hacks
- basestrap/main.py, packages/main.py: remove same hacks
- profile.yaml: antergos-live-dinit for dinit, move openrc pkg to init-specific
- packagechooser.conf (x2): default=Dinit, Dinit first in item list
- packagechooser_dm.conf: *-dinit instead of *-openrc
- README.md, README.pl.md, docs/*: update all OpenRC-first references
- AGENTS.md: document dinit as default
--ignore doesn't reliably prevent pacman from considering elogind-dinit
during fresh provider resolution on all pacman versions. --assume-installed
creates a dummy installed package for init-logind, satisfying the
dependency from base without needing any provider at all. The explicitly
listed elogind-openrc then gets installed normally and provides
init-logind for real.
Dropped --ignore entirely in favor of --assume-installed + --ask=4
(conflict resolution safety net). --assume-installed only added for
non-dinit providers (openrc, runit, s6).
The branding's netinstall.yaml has a Base System group with 'base'
that gets added to packageOperations. The packages module then
reinstalls base without --ignore, triggering the same init-logind
resolution bug. Adding the same --ignore logic from the basestrap
module.
Using --ignore=elogind-dinit (and alphabetically-before providers for
other inits) prevents pacman --noconfirm from resolving init-logind
to the wrong provider. This is more robust than installing the
provider separately, which can fail if base's deps are missing.
Same fix as basestrap/main.py: when base depends on init-logind
virtual, pacman --noconfirm picks the first provider alphabetically
(elogind-dinit < elogind-openrc), pulling in dinit -> dinit-rc which
conflicts with openrc (both provide/conflict with init-rc).
Install elogind- as a separate basestrap call BEFORE the
full package list to satisfy init-logind before base needs it.
dinit-rc and openrc both provide AND conflict with virtual init-rc and
cannot coexist. When base depends on init-logind (virtual), pacman with
--noconfirm picks the first alphabetically -- elogind-dinit over
elogind-openrc -- pulling in dinit -> dinit-rc, which conflicts with
openrc (pulled by elogind-openrc via dbus-openrc).
Fix: use operations.insert(0, ...) so elogind-{init} installs as a
separate pacman call BEFORE base, satisfying init-logind before base
needs it.