moonarch-git: skip wlsunset in global enable loop
Build and publish packages / build-and-publish (push) Successful in 18s
Build and publish packages / build-and-publish (push) Successful in 18s
The blanket WantedBy-symlink loop installed a global-scope link for wlsunset, which meant `systemctl --user disable` (the waybar nightlight toggle's mechanism) could never persist — systemd warned about exactly this scope mismatch on every disable. Filter survived reboots even when the user turned it off. PKGBUILD now skips wlsunset; moonarch.install drops the legacy symlink on upgrade. pkgrel bumped so installed systems pick up the fix.
This commit is contained in:
@@ -1,5 +1,12 @@
|
|||||||
# Decisions
|
# Decisions
|
||||||
|
|
||||||
|
## 2026-05-04 – moonarch-git: skip wlsunset in global enable loop
|
||||||
|
|
||||||
|
- **Who**: Dominik, ClaudeCode
|
||||||
|
- **Why**: PKGBUILD's blanket loop over `defaults/etc/systemd/user/*.service` created `/etc/systemd/user/graphical-session.target.wants/wlsunset.service` — a global-scope symlink. The waybar nightlight toggle calls `systemctl --user disable wlsunset`, which only touches user-scope symlinks; the global one persists, so the filter came back on every reboot. Fix coordinates with moonarch repo (post-install.sh and CLAUDE.md updates) — see `moonarch/DECISIONS.md` 2026-05-04 entry.
|
||||||
|
- **Tradeoffs**: A whitelist of services-to-enable (instead of blacklist) would be cleaner long-term, but the project ships exactly one toggle-able user service today; a `skip_enable` array reads more clearly against the existing loop. `pre_upgrade()` cleanup is conservative: removes only the wlsunset wants-symlink, leaves the unit file itself.
|
||||||
|
- **How**: PKGBUILD `package()` — symlink loop now consults `skip_enable=("wlsunset.service")` and skips matching basenames. `moonarch.install` `pre_upgrade()` — deletes pre-existing `/etc/systemd/user/graphical-session.target.wants/wlsunset.service` so installed systems migrate cleanly. `pkgrel` bumped 11 → 12 so existing installs see the fix on next `pacman -Syu`; otherwise the registry would carry a same-versioned package and clients would skip the upgrade.
|
||||||
|
|
||||||
## 2026-04-28 – Bump epoch on moongreet-git after upstream version rollback
|
## 2026-04-28 – Bump epoch on moongreet-git after upstream version rollback
|
||||||
- **Who**: Dominik, ClaudeCode
|
- **Who**: Dominik, ClaudeCode
|
||||||
- **Why**: `pacman -Syu` warned that local `moongreet-git 0.10.0.r0.gce9f219-3` is "newer" than the moonarch registry's `0.8.6.r0.gb9b6f50-1`. Cause: `greetd-moongreet` upstream was tagged `v0.9.0` and `v0.10.0` early on, then the tag history continued with `v0.8.4` → `v0.8.5` → `v0.8.6` patches on top — a deliberate downgrade of the version line. `pkgver()` uses `git describe --long --tags`, which now returns `0.8.6.r0.gb9b6f50` at HEAD, but any system that built moongreet before the tag rollback still has the higher-sorting `0.10.0` installed. Without an epoch bump, those systems will never accept the registry's 0.8.x as an upgrade.
|
- **Why**: `pacman -Syu` warned that local `moongreet-git 0.10.0.r0.gce9f219-3` is "newer" than the moonarch registry's `0.8.6.r0.gb9b6f50-1`. Cause: `greetd-moongreet` upstream was tagged `v0.9.0` and `v0.10.0` early on, then the tag history continued with `v0.8.4` → `v0.8.5` → `v0.8.6` patches on top — a deliberate downgrade of the version line. `pkgver()` uses `git describe --long --tags`, which now returns `0.8.6.r0.gb9b6f50` at HEAD, but any system that built moongreet before the tag rollback still has the higher-sorting `0.10.0` installed. Without an epoch bump, those systems will never accept the registry's 0.8.x as an upgrade.
|
||||||
|
|||||||
+12
-4
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
pkgname=moonarch-git
|
pkgname=moonarch-git
|
||||||
pkgver=r123.952776c
|
pkgver=r123.952776c
|
||||||
pkgrel=11
|
pkgrel=12
|
||||||
pkgdesc="Moonarch desktop environment defaults — Niri, Waybar, Catppuccin Mocha"
|
pkgdesc="Moonarch desktop environment defaults — Niri, Waybar, Catppuccin Mocha"
|
||||||
arch=('any')
|
arch=('any')
|
||||||
url="https://gitea.moonarch.de/nevaforget/moonarch"
|
url="https://gitea.moonarch.de/nevaforget/moonarch"
|
||||||
@@ -209,11 +209,19 @@ package() {
|
|||||||
# --- Systemd user services -> /etc/systemd/user/ ---
|
# --- Systemd user services -> /etc/systemd/user/ ---
|
||||||
install -Dm644 defaults/etc/systemd/user/*.service -t "$pkgdir/etc/systemd/user/"
|
install -Dm644 defaults/etc/systemd/user/*.service -t "$pkgdir/etc/systemd/user/"
|
||||||
|
|
||||||
# Enable services by creating the WantedBy symlinks directly
|
# Enable services by creating the WantedBy symlinks directly.
|
||||||
|
# Toggle-able services (user-controlled via UI) are skipped here so
|
||||||
|
# `systemctl --user disable` can actually take effect — a global-scope
|
||||||
|
# symlink in /etc/ would override any user-scope disable.
|
||||||
install -dm755 "$pkgdir/etc/systemd/user/graphical-session.target.wants"
|
install -dm755 "$pkgdir/etc/systemd/user/graphical-session.target.wants"
|
||||||
|
skip_enable=("wlsunset.service")
|
||||||
for svc in defaults/etc/systemd/user/*.service; do
|
for svc in defaults/etc/systemd/user/*.service; do
|
||||||
ln -sf "../$(basename "$svc")" \
|
name="$(basename "$svc")"
|
||||||
"$pkgdir/etc/systemd/user/graphical-session.target.wants/$(basename "$svc")"
|
for s in "${skip_enable[@]}"; do
|
||||||
|
[[ "$name" == "$s" ]] && continue 2
|
||||||
|
done
|
||||||
|
ln -sf "../$name" \
|
||||||
|
"$pkgdir/etc/systemd/user/graphical-session.target.wants/$name"
|
||||||
done
|
done
|
||||||
|
|
||||||
# --- Systemd system service (battery conservation restore) -> /usr/lib/systemd/system/ ---
|
# --- Systemd system service (battery conservation restore) -> /usr/lib/systemd/system/ ---
|
||||||
|
|||||||
@@ -95,6 +95,11 @@ pre_upgrade() {
|
|||||||
done < /etc/passwd
|
done < /etc/passwd
|
||||||
rm -f /etc/systemd/user/graphical-session.target.wants/cliphist.service 2>/dev/null || true
|
rm -f /etc/systemd/user/graphical-session.target.wants/cliphist.service 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Drop legacy global-scope wlsunset enablement. Nightlight is a toggle —
|
||||||
|
# the global symlink overrode user-scope disable, so the filter survived
|
||||||
|
# reboots even after the user turned it off.
|
||||||
|
rm -f /etc/systemd/user/graphical-session.target.wants/wlsunset.service 2>/dev/null || true
|
||||||
}
|
}
|
||||||
|
|
||||||
post_upgrade() {
|
post_upgrade() {
|
||||||
|
|||||||
Reference in New Issue
Block a user