so github told me my repo has NO community standards apparently
CODE_OF_CONDUCT? nonexistent. ISSUE_TEMPLATES? nada.
PULL_REQUEST_TEMPLATE? the void stared back.
and github profiles has a little checklist like im some
kind of degenerate who doesnt know how to run a project.
well NOW i have standards. and they are ROCK SOLID STABLE.
you want systemd? fork from before-systemd-change and figure
it out yourself, i gave you a numbered tutorial right in the
CoC. the AI moderator will read it and then politely but
firmly tell you to go fork yourself (the repo, not literally,
read the CoC).
also threw in the pixie SDDM switch that i apparently never
committed to the netinstall yamls either (kill me), the batch
install main.py cleanup, and fixed the README lying about
why artix.
DEUS VULT and please file your issues in the YAML forms
provided or the AI will judge you
live-overlay had an 11-line appletsrc (no panels) that overwrote
the 665-line version from antergos-layan-theme during ISO build.
This caused Plasma to run the look-and-feel layout script instead
of using the full 2-panel config.
why the FUCK did i think making an init selector was a good idea
artix themselves dont even ship services in their online installer
they just give you a bare system and say "figure it out" and
it WORKS because people can just install their init of choice
afterwards. but nooooo i had to be clever and build a whole
netinstall-add monstrosity with openrc/runit/s6 service groups
that broke constantly because basestrap --overwrite is a lie
and init packages conflict with each other and sddm-openrc +
lightdm-openrc both Provide: init-displaymanager and pacman
just goes 🖕 during install.
so anyway. dinit only now. you want something else? read
changing-init.md, i literally copied the artix wiki tutorial.
i am not maintaining four init service groups in netinstall.yaml
for the rest of my life. this is my villain origin story.
actual changes:
- ripped out offline calamares mode (was never truly offline)
- ripped out packagechooser.conf (good fucking riddance)
- added packagechooser_dm.conf so you can at least pick your DM
- added BYODE offline installer (bare system + btrfs + snapper,
no DE, you pacman -Sy plasma-meta yourself)
- added yay + snapper + btrfs-progs to rootfs
- shoved Init Services + DM groups into netinstall.yaml (dinit
only, obviously)
- updated every markdown file that mentioned another init like
they were cursed (they were)
- wrote changing-init.md so i can just paste the link next time
someone asks
- X-KDE-IsAdminApplication=true so KDE stops acting like
calamares is a virus (its not, its just desperate)
The packagechooser_dm.conf has greetd as a DM option with
method: netinstall-select, but no matching 'greetd' group existed
in /etc/calamares/modules/netinstall.yaml (which is what Calamares
loads in online mode via modules-search: [local] resolution).
Without the group, selecting greetd silently fails and the
displaymanager module falls back to SDDM instead.
Add greetd + greetd-dinit group alongside the existing SDDM,
LightDM, LXDM, LY groups.
- Add COSMIC desktop subgroup to online netinstall (galaxy repo)
- Add greetd as display manager option in packagechooser_dm.conf
(required by COSMIC's cosmic-greeter)
- Replace non-transparent 900x650 logo with transparent removebg version
at 128x92 (128x128) and 256x185 (256x256) in root-overlay icon theme paths
- Update docs to reflect COSMIC availability and greetd option
Place pipewire.desktop in root-overlay /etc/skel/.config/autostart/
so PipeWire starts via XDG autostart on login via the patched
artix-pipewire-launcher (now supports dinit in our pipewire fork).
Configure SDDM [Wayland] section with kwin_wayland compositor
command for a Wayland-native greeter display.
Includes:
- buildiso: antergos theme symlinked as artix for prepare_grub
- profile.yaml: dinit-user-spawn -> userspawn-dinit, added
dbus-dinit-user, pipewire-pulse-dinit, userspawn-dinit to livefs,
antergos-lsb-release
- services-artix.conf: dinit-user-spawn -> userspawn
- basestrap.conf: xlibre-xserver for online install
- pacman.conf: IgnorePkg xorg-server to avoid conflict with xlibre
- sddm.conf: Wayland compositor command
- common.yaml: cleanup (dedup lsb-release, vi->ex-vi-compat,
remove artix-grub-theme, jack2, noto-fonts-emoji)
- iso-x86_64.conf: IgnorePkg xorg-server for ISO build
xlibre-xserver is the modern Artix unified X server that provides
both x11win-server (required by SDDM) and xorg-server (required by
all DEs). Setting use-xlibre: false caused the old split packages
(x11win-server from system repo vs xorg-server from world repo) to
conflict during online installs when users selected SDDM + any DE
that pulls xorg-server/xlibre-xserver.
Switched both full and minimal profiles to use-xlibre: true.
SDDM pulls x11win-server (system repo) which conflicts with
xlibre-xserver (world repo) pulled by Cinnamon/MATE/LXQt.
Added warning descriptions to all DM choices suggesting
LightDM for incompatible combos.
- YAML document separator '---' was glued to 'qmlSearch' key, causing
the notesqml module to fall back to default example release notes
- Copied the config to calamares-online/modules/ and
calamares-offline/modules/ so both modes can find it
Introduces iso-profiles/antergos-minimal/, a new Xfce-based profile for
building a lightweight Antergos NeXT ISO under the 2 GB GitHub Releases
limit (the full Plasma profile produces ~2.15 GB).
Profile structure:
- profile.yaml: Xfce4 desktop, dinit-only init packages, Falkon browser,
minimal app selection, antergos-xfce-theme included in rootfs
- root-overlay/: SDDM configured for xfce.desktop, GRUB theme pointed to
antergos, xfconf settings for Antergos-NeXT GTK/xfwm4 theme
- live-overlay/: Calamares offline + online configs, netinstall with
multiple DE options (Plasma, Xfce, Cinnamon, MATE, LXQt, i3, Sway,
Hyprland), notesqml@minimal-info step explaining the edition rationale,
basestrap operations for antergos-release/grub-theme/keyring, display
manager selection (SDDM/LightDM/LXDM/LY), audio services (pipewire),
and antergos-xfce-theme in the Xfce subgroup
Default Xfce theme is set to Antergos-NeXT (Numix-derived, blue accent)
via xfconf XML in both live-overlay and root-overlay skel directories.
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.
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
- 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.
- Install base + antergos-next-keyring first
- try_remove artix-release (catches errors silently)
- Then install antergos-release, wallpapers, grub-theme
- antergos-release has replaces=artix-release so pacman handles
the swap, but try_remove is a safety net
The live-overlay had /home/antergos/.config/plasma-org.kde.plasma.desktop-appletsrc
which got copied as root before configure_user() creates the live user.
useradd -m skips chown if the home dir already exists, leaving .config/
owned by root — Plasma then can't write kcminitrc, xdg-desktop-portal-kderc, etc.
Wallpaper config is already in /etc/skel/.config/ so useradd -m copies it
with correct ownership.
Replace antergos-next-memes with:
- antergos-next-desktop-settings — Qt5/Qt6 color configs, kdeglobals
- antergos-plasma-theme — plasma desktop theme + look-and-feel + splash
- antergos-sddm-theme — SDDM login theme with built-in background
Calamares branding is set before these in package order per critical
gotcha (branding overwrites Calamares defaults).
The wallpaper autostart script was failing on Plasma 6 + Wayland,
causing the live session to show the default Plasma background instead
of the Antergos NeXT branded wallpaper.
Changes:
- Rewrote set-antergos-wallpaper.sh with three fallback methods:
1. plasma-apply-wallpaperimage (primary)
2. kwriteconfig6 + qdbus6 config reload
3. qdbus6 evaluateScript API
- Added direct wallpaper config in live-overlay/home/antergos/ for
the live user (most reliable, runs before Plasma starts)
- Updated existing /etc/skel/ and main.xml defaults to use
antergos-wallpaper.png instead of adwaita-morning.webp
- Downloaded and included original Antergos wallpaper from the
project's wallpapers repo
Proactively remove artix-release during basestrap so the packages
module's single pacman -S transaction doesn't hit the conflict when
installing antergos-release. try_remove catches errors silently if
artix-release can't be removed.
antergos-release was missing from packages.yaml so the CI never
built it, causing error code 1 when the packages module tried to
install it. Now re-added to both CI config and Default netinstall
group.
antergos-release PKGBUILD exists but the package was never built
and deployed to the GitHub Pages repo. The packages module tried to
install it and pacman returned error code 1 (package not found).
Remove it until the CI builds and deploys it.
Also remove try_remove: artix-release from basestrap since it's not
needed without antergos-release in the Default group.
- Add antergos-next-keyring to basestrap install list so keyring files
are available in the target early (uses host keyring which already
trusts the Antergos key)
- Add antergos-next to keyrings list so pacman-key --populate imports
the Antergos key into the target's keychain
- try_remove artix-release so antergos-release doesn't conflict when
packages module runs later (replaces= PKGBUILD fix also pushed, but
this works regardless of rebuild)
- Fix remove() method in basestrap main.py: was missing --root <target>,
causing removals to operate on the HOST instead of the target
- Add antergos-release, antergos-next-keyring, antergos-wallpapers to
Default netinstall group (both global and online) so installed system
keeps Antergos branding instead of appearing as plain Artix
- Populate services-artix.conf (both online + offline) with service names
so SDDM, NetworkManager, dbus, etc. are enabled after install (fixes
boot-to-TTY issue)
- Create grubcfg.conf for online mode with GRUB_THEME default so
antergos-grub-theme is actually applied by grub-mkconfig
The basestrap module from calamares-extensions had a hardcoded check that
skipped installing 'base' if hasInternet wasn't True in global storage.
This silently left the target empty, causing the packages module to fail
with error 127 (pacman not found in chroot).
Changes:
- Make hasInternet check configurable via skip_if_no_internet (default false),
matching the packages module pattern
- Fix potential NameError when netinstallAdd isn't in global storage
- Copy basestrap.conf to global modules override so it's available to online
mode (the launcher only copies settings.conf, not module configs)