Compare commits

..

46 Commits

Author SHA1 Message Date
pkgver-bot 8e3ddf0b98 chore(moonset): bump pkgver to 0.9.1
Build and publish packages / build-and-publish (push) Successful in 9m12s
2026-06-17 11:48:40 +00:00
pkgver-bot 8684f77627 chore(moonlock): bump pkgver to 0.6.19
Build and publish packages / build-and-publish (push) Successful in 10m12s
2026-06-17 09:55:45 +00:00
pkgver-bot 990b880f1c chore(moonarch-git): bump pkgver to r129.d101b23
Build and publish packages / build-and-publish (push) Successful in 13s
2026-06-16 09:02:54 +00:00
nevaforget f7c0989bad fix(moonarch-git): add sweet-cursors dependency (pkgrel 15)
Build and publish packages / build-and-publish (push) Successful in 15s
Moonarch configures the Sweet-cursors theme in six places — greeter
(moongreet.toml, niri-greeter.kdl) and desktop (niri config.kdl, GTK 3/4
settings.ini) — but never declared the package that ships the theme.
On a fresh install the cursor theme was absent system-wide, so Niri and
GTK fell back to the default cursor; it only worked where sweet-cursors
happened to be present (e.g. installed into a user home).

sweet-cursors-git provides 'sweet-cursors'; listing it ensures the theme
is installed system-wide for both the greeter user and the desktop user.
2026-06-12 15:44:14 +02:00
pkgver-bot 1d85c5ec73 chore(moonarch-git): bump pkgver to r127.806841d
Build and publish packages / build-and-publish (push) Successful in 11s
2026-06-12 09:13:42 +00:00
nevaforget 8d9ab7a997 feat(moonarch-git): install xdg-desktop-portal Inhibit override
Build and publish packages / build-and-publish (push) Successful in 20s
pkgrel 13 -> 14.
2026-06-12 11:10:00 +02:00
nevaforget 1ddcda70e3 fix(sshfsc): commit no-suffix tag-build PKGBUILD (was not staged in f86d936 — git add aborted on stale sshfsc-git pathspec)
Build and publish packages / build-and-publish (push) Successful in 19s
2026-06-10 21:01:17 +02:00
nevaforget f86d936c9e refactor: sshfsc-git → sshfsc (no-suffix tag-build)
Build and publish packages / build-and-publish (push) Successful in 1m29s
2026-06-10 20:54:11 +02:00
nevaforget eafe7b6634 build(moonlock): bump pkgrel to rebuild — v0.6.17 tag now on Gitea (initial build pre-dated the tag push)
Build and publish packages / build-and-publish (push) Successful in 8m42s
2026-06-10 20:24:04 +02:00
nevaforget 9c05e33382 refactor: moonarch-git depends on renamed packages (pkgrel 13)
Build and publish packages / build-and-publish (push) Successful in 12s
2026-06-10 19:48:01 +02:00
nevaforget db05837b09 refactor: moongreet-git → moongreet (no-suffix tag-build, keep epoch)
Build and publish packages / build-and-publish (push) Successful in 8m48s
2026-06-10 19:38:25 +02:00
nevaforget a930117ec7 refactor: moonset-git → moonset (no-suffix tag-build)
Build and publish packages / build-and-publish (push) Successful in 8m39s
2026-06-10 19:29:09 +02:00
nevaforget 4c3b48d73f refactor: moonlock-git → moonlock (no-suffix tag-build)
Build and publish packages / build-and-publish (push) Failing after 5s
2026-06-10 19:26:59 +02:00
nevaforget 8aa127cbf0 fix(corsairctl): add alsa-lib + hidapi to makedepends (build-time libs)
Build and publish packages / build-and-publish (push) Successful in 2m10s
2026-06-10 19:11:38 +02:00
nevaforget 4fd0310818 feat: add corsairctl package (tag-build)
Build and publish packages / build-and-publish (push) Failing after 1m2s
2026-06-10 19:05:03 +02:00
pkgver-bot c68785fc71 chore(moonarch-git): bump pkgver to r125.dbc2997
Build and publish packages / build-and-publish (push) Successful in 12s
2026-06-08 11:50:10 +00:00
nevaforget 5d4ace5cb0 feat(moonarch-git): install fontconfig defaults conf
Build and publish packages / build-and-publish (push) Failing after 14s
Owned install of /etc/fonts/conf.d/65-moonarch-fonts.conf alongside the existing /etc configs (mpv, systemd).
2026-06-08 13:49:10 +02:00
pkgver-bot ef11bf2891 chore(moongreet-git): bump pkgver to 0.9.0.r2.g030f8c6
Build and publish packages / build-and-publish (push) Successful in 9m42s
2026-06-02 14:57:32 +00:00
pkgver-bot 49ede98393 chore(moongreet-git): bump pkgver to 0.9.0.r0.g63d6c65
Build and publish packages / build-and-publish (push) Successful in 9m44s
2026-06-02 10:59:24 +00:00
pkgver-bot be516cb10a chore(moongreet-git): bump pkgver to 0.8.7.r0.g4122860
Build and publish packages / build-and-publish (push) Successful in 10m23s
2026-06-02 10:47:43 +00:00
nevaforget b737bc7cee moonarch-git: skip wlsunset in global enable loop
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.
2026-05-04 14:14:41 +02:00
nevaforget e6615bad76 chore(moonarch-git): bump pkgver to r123.952776c
Build and publish packages / build-and-publish (push) Successful in 16s
Pre-bump to match moonarch HEAD ahead of push so pkgver-bot detects
"already up to date" and skips a redundant build trigger. Without
this, pushing moonarch first would push another pkgver-bump commit
here and re-trigger build-and-publish a second time.
2026-05-04 12:29:51 +02:00
nevaforget 7f7843ec41 moonarch-git: drop udev rule install, batsaver moved to pkexec
The udev rule for charge_control_end_threshold permissions has been
removed in moonarch (commit 952776c). The toggle now dispatches a
pkexec helper instead. PKGBUILD no longer needs to install the rule.

The pkgver bump in this PKGBUILD will be picked up automatically by
pkgver-bot on the next moonarch push.
2026-05-04 12:29:04 +02:00
pkgver-bot ba46cd38a3 chore(moonarch-git): bump pkgver to r122.f4d60d3
Build and publish packages / build-and-publish (push) Successful in 15s
2026-05-04 09:15:33 +00:00
pkgver-bot e5ef4fd2a1 chore(sshfsc-git): bump pkgver to 0.1.0.r11.g4306170
Build and publish packages / build-and-publish (push) Successful in 18s
2026-05-04 08:26:27 +00:00
pkgver-bot 7f51eeee0b chore(sshfsc-git): bump pkgver to 0.1.0.r10.ge6a02e5
Build and publish packages / build-and-publish (push) Successful in 29s
2026-05-04 08:10:10 +00:00
pkgver-bot 929e55b300 chore(moonlock-git): bump pkgver to 0.6.12.r1.g73c59e5
Build and publish packages / build-and-publish (push) Successful in 8m47s
2026-05-04 07:29:58 +00:00
pkgver-bot 6b14b98492 chore(sshfsc-git): bump pkgver to 0.1.0.r9.g8edddc5
Build and publish packages / build-and-publish (push) Successful in 30s
2026-05-04 07:26:19 +00:00
pkgver-bot d144dff496 chore(sshfsc-git): bump pkgver to 0.1.0.r8.g3f3c631
Build and publish packages / build-and-publish (push) Successful in 18s
2026-04-28 13:51:01 +00:00
pkgver-bot b58181c32b chore(sshfsc-git): bump pkgver to 0.1.0.r7.gafb51f1
Build and publish packages / build-and-publish (push) Successful in 1m10s
2026-04-28 13:39:48 +00:00
nevaforget 14d4dde898 ci: only delete zombie versions, not the just-uploaded one
Run 107's clear loop on sweet-cursors deleted the just-uploaded moongreet-git versions. Track per-package "just built" version and skip it in the DELETE loop. Add .type=="arch" jq filter as defense-in-depth.
2026-04-28 15:39:45 +02:00
nevaforget e5186c616f ci: cargo -j1 to keep peak memory under host budget; retrigger moongreet
Build and publish packages / build-and-publish (push) Successful in 9m0s
Run 108 hit a verified global OOM (constraint=CONSTRAINT_NONE) when cargo -j2 ran two parallel rustc workers on a host with 1.6 GiB available. -j1 halves the peak. 4 GiB swapfile added on host as additional buffer; this changes the build pipeline as the second layer.
2026-04-28 15:14:07 +02:00
nevaforget 77da854149 chore(moongreet-git): bump pkgrel to retrigger build after run 107 cross-package delete
Build and publish packages / build-and-publish (push) Failing after 10m22s
Run 107's sweet-cursors clear-block deleted moongreet-git from the registry (workflow bug). Single-PKGBUILD push avoids the multi-package code path.
2026-04-28 14:46:39 +02:00
nevaforget 0f85c50e6f chore: bump pkgrel to retrigger build after I/O caps applied
Build and publish packages / build-and-publish (push) Successful in 7m6s
Run 106 hung the host before I/O caps were in place. act_runner now has 30 MB/s + 500 IOPS hard limits via blkio_config; this commit retriggers the build that failed mid-compile.
2026-04-28 10:10:26 +02:00
nevaforget e7398d479e chore: bump epoch on moongreet-git and sweet-cursors-git
Build and publish packages / build-and-publish (push) Failing after 32m18s
Local AUR/older builds outsort the registry versions on pacman vercmp:

- sweet-cursors-git: paru-built r445 (Gigas002/Sweet#cursors) > registry
  r1 (our snapshot fork). Snapshot stays frozen by design.
- moongreet-git: pre-rollback 0.10.0 > current 0.8.6 (upstream tag
  history continued at 0.8.4–0.8.6 on top of an earlier 0.10.0 line).

epoch=1 on both, pkgrel bumped to retrigger CI. Also extends .gitignore
to cover the remaining makepkg bare-clone dirs (moongreet, moonlock,
moonset, sshfs_connect) that weren't listed before.
2026-04-28 09:04:14 +02:00
pkgver-bot 33e61d4df5 chore(sshfsc-git): bump pkgver to 0.1.0.r6.gd01a358
Build and publish packages / build-and-publish (push) Successful in 21s
2026-04-26 09:31:32 +00:00
nevaforget c6c0bf1552 chore(sshfsc-git): bump pkgrel to 2 to retrigger build
Build and publish packages / build-and-publish (push) Successful in 47s
Initial sshfsc-git build (run #150, 2026-04-19) failed with
'go: command not found' — at that point the workflow did not yet
install makedepends. Workflow now reads makedepends from PKGBUILD
and installs them via pacman before makepkg, so a fresh trigger
should succeed.
2026-04-25 14:28:31 +02:00
pkgver-bot 0d6c35cff8 chore(moonarch-git): bump pkgver to r120.7b6ba3b
Build and publish packages / build-and-publish (push) Successful in 12s
2026-04-24 18:41:48 +00:00
pkgver-bot a7d3c4d435 chore(moonarch-git): bump pkgver to r119.aef7f64
Build and publish packages / build-and-publish (push) Successful in 12s
2026-04-24 15:52:54 +00:00
nevaforget 2566c0b44e refactor(moonarch-git): own mpv.conf directly, drop staging+install hook
Build and publish packages / build-and-publish (push) Successful in 12s
Install mpv.conf straight to /etc/mpv/mpv.conf in package(), remove
the /usr/share/moonarch/mpv/ staging and the post_install copy.
modernz.conf is no longer shipped — overrides moved into mpv.conf
via script-opts-append.
2026-04-24 17:52:30 +02:00
pkgver-bot c4f702e3e5 chore(moonarch-git): bump pkgver to r118.0064170
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-24 15:34:01 +00:00
nevaforget bb36df30bc feat(moonarch-git): stage + deploy mpv configs via post_install
Build and publish packages / build-and-publish (push) Failing after 9s
Stages defaults/etc/mpv/ to /usr/share/moonarch/mpv/ and copies
mpv.conf + modernz.conf into /etc/mpv/ on install. modernz.conf
deliberately overwrites the AUR default from mpv-modernz-git.
pkgrel bumped to 11.
2026-04-24 17:33:38 +02:00
pkgver-bot 26eac512bf chore(moongreet-git): bump pkgver to 0.8.3.r3.gb9b6f50
Build and publish packages / build-and-publish (push) Successful in 5m30s
2026-04-24 12:20:23 +00:00
pkgver-bot 604d80cbe6 chore(moonarch-git): bump pkgver to r116.d5c1b8a
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-24 12:15:41 +00:00
pkgver-bot 5373e651a1 chore(moonset-git): bump pkgver to 0.8.5.r0.g8285bcd
Build and publish packages / build-and-publish (push) Failing after 7s
2026-04-24 12:15:28 +00:00
pkgver-bot 794261488a chore(moonlock-git): bump pkgver to 0.6.12.r0.g3e610bd
Build and publish packages / build-and-publish (push) Failing after 11s
2026-04-24 12:15:13 +00:00
18 changed files with 295 additions and 104 deletions
+40 -18
View File
@@ -53,13 +53,18 @@ jobs:
sudo pacman -S --needed --noconfirm $MAKEDEPS sudo pacman -S --needed --noconfirm $MAKEDEPS
fi fi
# Parallel build with two cargo jobs. Previous single-threaded # Single-threaded build to keep memory peak below the 8 GiB
# throttling was based on an unverified OOM assumption (run 86 # host budget. Run 108 (2026-04-28) hit a verified global OOM
# on 2026-04-23 stalled; no dmesg/journalctl evidence of # (constraint=CONSTRAINT_NONE in journalctl, rustc killed at
# OOMKiller was ever captured). If a real OOM happens, capture # 1.7 GiB RSS while host was already at 6.2 GiB used / 1.6 GiB
# `dmesg | grep -i "killed process"` first before re-throttling. # available). Two parallel rustc workers blow that reserve.
export CARGO_BUILD_JOBS=2 # Container-side mem_limit doesn't help because the kill is
export MAKEFLAGS="-j2" # global, not cgroup. -j1 halves the peak; act_runner blkio
# cap (30 MB/s) protects I/O. Do NOT raise without a wider
# memory plan (more host RAM, per-container caps, or larger
# swap headroom).
export CARGO_BUILD_JOBS=1
export MAKEFLAGS="-j1"
makepkg -sfd --noconfirm makepkg -sfd --noconfirm
# makepkg can emit multiple artifacts per build (main + -debug # makepkg can emit multiple artifacts per build (main + -debug
@@ -75,29 +80,46 @@ jobs:
continue continue
fi fi
# Collect unique package names (includes split packages like # Collect unique package names + the version we just built for
# foo + foo-debug). We delete ALL existing versions of each # each. We delete only ZOMBIE versions (anything in the registry
# before upload: Gitea's Arch registry doesn't fully regenerate # for this name that is NOT the version we just built) to clear
# the repo DB on pkgver change — old entries stick around as # the Gitea Arch DB which doesn't evict on pkgver change.
# zombies and block pacman from seeing updates. #
# Run 107 (2026-04-28) showed the previous "delete all versions"
# logic killed cross-package state when multiple PKGBUILDs were
# built in one run — sweet-cursors's clear loop deleted the
# just-uploaded moongreet-git versions. The skip-current-version
# logic + .type=="arch" filter prevent that recurrence.
declare -A SEEN_NAMES declare -A SEEN_NAMES
declare -A KEEP_VERS
for PKG_FILE in "${PKG_FILES[@]}"; do for PKG_FILE in "${PKG_FILES[@]}"; do
base="${PKG_FILE%.pkg.tar.zst}" base="${PKG_FILE%.pkg.tar.zst}"
base="${base%-*}"; base="${base%-*}"; base="${base%-*}" # Strip arch (last -seg), pkgrel (next), pkgver (next) → name.
SEEN_NAMES["$base"]=1 # Keep "$pkgver-$pkgrel" as the full version.
arch_stripped="${base%-*}"
rel_stripped="${arch_stripped%-*}"
ver_stripped="${rel_stripped%-*}"
pkg_name="$ver_stripped"
full_ver="${arch_stripped#${ver_stripped}-}"
SEEN_NAMES["$pkg_name"]=1
KEEP_VERS["$pkg_name"]="$full_ver"
done done
sudo pacman -S --needed --noconfirm jq sudo pacman -S --needed --noconfirm jq
for PKG_NAME in "${!SEEN_NAMES[@]}"; do for PKG_NAME in "${!SEEN_NAMES[@]}"; do
echo "==> Clearing existing versions of $PKG_NAME" KEEP="${KEEP_VERS[$PKG_NAME]}"
# Listing API returns every matching package across all types, echo "==> Clearing zombie versions of $PKG_NAME (keep: $KEEP)"
# so we filter by exact name client-side.
VERSIONS=$(curl -s \ VERSIONS=$(curl -s \
-H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \ -H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \
"https://gitea.moonarch.de/api/v1/packages/nevaforget?type=arch&q=${PKG_NAME}&page=1&limit=100" \ "https://gitea.moonarch.de/api/v1/packages/nevaforget?type=arch&q=${PKG_NAME}&page=1&limit=100" \
| jq -r --arg n "$PKG_NAME" '.[] | select(.name==$n) | .version') | jq -r --arg n "$PKG_NAME" --arg t "arch" \
'.[] | select(.name==$n and .type==$t) | .version')
for V in $VERSIONS; do for V in $VERSIONS; do
if [ "$V" = "$KEEP" ]; then
echo " skip $PKG_NAME@$V (just built)"
continue
fi
echo " delete $PKG_NAME@$V" echo " delete $PKG_NAME@$V"
DEL_CODE=$(curl -s -o /dev/null -w '%{http_code}' -X DELETE \ DEL_CODE=$(curl -s -o /dev/null -w '%{http_code}' -X DELETE \
-H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \ -H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \
+4
View File
@@ -5,3 +5,7 @@ pkg/
# Bare git repos cloned by makepkg # Bare git repos cloned by makepkg
moonarch-git/moonarch/ moonarch-git/moonarch/
sweet-cursors-git/Sweet-cursors/ sweet-cursors-git/Sweet-cursors/
moongreet-git/greetd-moongreet/
moonlock-git/moonlock/
moonset-git/moonset/
sshfsc-git/sshfs_connect/
+26
View File
@@ -1,5 +1,31 @@
# Decisions # Decisions
## 2026-06-10 Rust/Go packages: -git → no-suffix tag-build (match what ships)
- **Who**: Dominik, ClaudeCode
- **Why**: `moonlock-git`/`moongreet-git`/`moonset-git`/`sshfsc-git` carried the `-git` suffix (Arch convention: VCS package, user builds HEAD locally) but the registry ships pre-built binaries — the user never builds. The suffix lied about what is distributed. corsairctl already did it right: no suffix, build from a versioned git tag (`#tag=v$pkgver`) — the official-Arch-repo model (versioned source, built centrally, distributed as binary).
- **Tradeoffs**: A `-bin` style (project CI builds the binary, PKGBUILD installs only a release asset) was considered but rejected: it needs new build infra in each project repo, whereas tag-build is the smallest change to the existing two-stage CI and corsairctl already proves the pattern. The build stays in CI (no OOM-relevant change). Downside: per-package `update-pkgver` now reads the latest tag instead of `git describe`.
- **How**: In moonarch-pkgbuilds, `git mv <name>-git <name>`; PKGBUILD drops `pkgver()`, sets fixed `pkgver` = latest tag, `source=...#tag=v$pkgver`, `pkgname` without suffix, `pkgrel=1`, plus `replaces=('<name>-git')` + `conflicts=('<name>-git')` for clean client migration on `pacman -Syu`. moongreet keeps `epoch=1` (2026-04-28 rollback) and its install hook. corsairctl added as-is (already tag-style). `moonarch-git` `depends` updated to the new names (pkgrel 12 → 13). Per-project `update-pkgver.yaml` switched to tag-trigger + `git describe --tags --abbrev=0`. Old `-git` registry versions deleted manually (the name change defeats the auto zombie-cleanup). Scope: `sshfsc` deferred (only tag v0.1.0, HEAD 11 commits ahead — needs a fresh tag first); `sweet-cursors` stays `-git` (no version tags upstream).
## 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
- **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.
- **Tradeoffs**: Re-tagging upstream to leapfrog past v0.10.0 (e.g. v0.11.0) would also resolve the mismatch and avoid the epoch — but it would create a fake version that doesn't reflect the actual feature scope, and we'd be permanently chasing the v0.10.0 ghost on every future bump. Epoch is the canonical pacman mechanism for exactly this situation; one-time cost, no upstream lie.
- **How**: `epoch=1` added to `moongreet-git/PKGBUILD`, `pkgrel` bumped 3 → 4 to retrigger CI.
## 2026-04-28 Bump epoch on sweet-cursors-git to overrule AUR-built local installs
- **Who**: Dominik, ClaudeCode
- **Why**: `pacman -Syu` warned that local `sweet-cursors-git r445.1d92ac7-1` is "newer" than the moonarch registry's `r1.4b49c35-2`. Cause: our Gitea fork (`nevaforget/Sweet-cursors`) is a one-shot snapshot of `EliverLara/Sweet`'s `kde/cursors/Sweet-cursors/` from 2025-09-28 with a single `init` commit, so `pkgver()` always evaluates to `r1`. The local r445 came from the AUR package by `Gigas002` (source: `github.com/Gigas002/Sweet#cursors`, 445 commits, actively maintained, last cursor change 2026-03-02). Without an epoch bump, vercmp would flag the registry as a downgrade on every system that ever installed via paru/AUR.
- **Tradeoffs**: Switching the PKGBUILD source to `Gigas002/Sweet#cursors` would track upstream and avoid the version mismatch entirely, but requires `inkscape` + `xorg-xcursorgen` makedeps and a non-trivial SVG-compile build step in CI. Cursor changes upstream are minimal in practice (one fix in 6 months), so the maintenance value is low. Keeping the snapshot keeps the build trivial and the source tiny — at the cost of being permanently frozen at the September 2025 state. Documented in the fork's README.
- **How**: `epoch=1` added to `sweet-cursors-git/PKGBUILD`, `pkgrel` bumped 2 → 3 to retrigger CI. Added `README.md` to the `nevaforget/Sweet-cursors` Gitea repo explaining the snapshot rationale and pointing to `Gigas002/Sweet` for users who want a maintained variant.
## 2026-04-23 Rust PKGBUILDs honour CARGO_TARGET_DIR ## 2026-04-23 Rust PKGBUILDs honour CARGO_TARGET_DIR
- **Who**: Dominik, ClaudeCode - **Who**: Dominik, ClaudeCode
- **Why**: The act_runner container sets `CARGO_TARGET_DIR=/cache/target` (for cross-build cache persistence), but `moongreet-git`/`moonlock-git`/`moonset-git` `package()` hardcoded `target/release/<bin>`. Run 87 compiled for 8 min and then failed at `install: cannot stat 'target/release/moongreet'` because the binary actually lived in `/cache/target/release/`. Silent until today because earlier builds pre-date the env var. - **Why**: The act_runner container sets `CARGO_TARGET_DIR=/cache/target` (for cross-build cache persistence), but `moongreet-git`/`moonlock-git`/`moonset-git` `package()` hardcoded `target/release/<bin>`. Run 87 compiled for 8 min and then failed at `install: cannot stat 'target/release/moongreet'` because the binary actually lived in `/cache/target/release/`. Silent until today because earlier builds pre-date the env var.
+17
View File
@@ -0,0 +1,17 @@
pkgbase = corsairctl
pkgdesc = CLI tool for Corsair Bragi-protocol devices (HS80 RGB Wireless, etc.)
pkgver = 0.1.2
pkgrel = 1
url = https://gitea.moonarch.de/nevaforget/corsairctl
arch = x86_64
license = MIT
makedepends = cargo
makedepends = pkg-config
makedepends = alsa-lib
makedepends = hidapi
depends = hidapi
depends = alsa-lib
source = git+https://gitea.moonarch.de/nevaforget/corsairctl.git#tag=v0.1.2
sha256sums = SKIP
pkgname = corsairctl
+33
View File
@@ -0,0 +1,33 @@
# Maintainer: nevaforget <dom@moonarch.de>
pkgname=corsairctl
pkgver=0.1.2
pkgrel=1
pkgdesc='CLI tool for Corsair Bragi-protocol devices (HS80 RGB Wireless, etc.)'
arch=('x86_64')
url='https://gitea.moonarch.de/nevaforget/corsairctl'
license=('MIT')
depends=('hidapi' 'alsa-lib')
makedepends=('cargo' 'pkg-config' 'alsa-lib' 'hidapi')
source=("git+${url}.git#tag=v$pkgver")
sha256sums=('SKIP')
prepare() {
cd "$pkgname"
export RUSTUP_TOOLCHAIN=stable
cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}
build() {
cd "$pkgname"
export RUSTUP_TOOLCHAIN=stable
export CARGO_TARGET_DIR=target
cargo build --frozen --release
}
package() {
cd "$pkgname"
install -Dm755 "target/release/$pkgname" "$pkgdir/usr/bin/$pkgname"
install -Dm755 "scripts/corsairctl-waybar.sh" "$pkgdir/usr/bin/corsairctl-waybar"
install -Dm644 "udev/99-corsair.rules" "$pkgdir/usr/lib/udev/rules.d/99-corsair.rules"
install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
+81
View File
@@ -0,0 +1,81 @@
pkgbase = moonarch-git
pkgdesc = Moonarch desktop environment defaults — Niri, Waybar, Catppuccin Mocha
pkgver = r125.dbc2997
pkgrel = 13
url = https://gitea.moonarch.de/nevaforget/moonarch
install = moonarch.install
arch = any
license = MIT
makedepends = git
depends = moongreet
depends = moonlock
depends = moonset
depends = niri
depends = xwayland-satellite
depends = greetd
depends = waybar
depends = swaync
depends = libnotify
depends = foot
depends = foot-terminfo
depends = cliphist
depends = wl-clipboard
depends = kanshi
depends = wlsunset
depends = nwg-look
depends = brightnessctl
depends = awww
depends = pipewire
depends = pipewire-alsa
depends = pipewire-jack
depends = pipewire-pulse
depends = wireplumber
depends = libpulse
depends = alsa-utils
depends = pavucontrol
depends = gst-plugin-pipewire
depends = networkmanager
depends = network-manager-applet
depends = networkmanager-openvpn
depends = openvpn
depends = bluez
depends = bluez-utils
depends = gvfs
depends = gvfs-dnssd
depends = gvfs-mtp
depends = gvfs-smb
depends = udisks2
depends = ntfs-3g
depends = xdg-desktop-portal-gnome
depends = xdg-desktop-portal-gtk
depends = qt6-5compat
depends = ttf-ubuntusans-nerd
depends = zsh
depends = zsh-autosuggestions
depends = zsh-syntax-highlighting
depends = bat
depends = btop
depends = eza
depends = fastfetch
depends = fd
depends = fzf
depends = jq
depends = lazygit
depends = ripgrep
depends = neovim
depends = git
depends = fwupd
depends = ufw
depends = polkit-gnome
depends = upower
optdepends = docker: container runtime
optdepends = docker-compose: multi-container orchestration
optdepends = rustup: Rust toolchain manager (development)
optdepends = waterfox-bin: web browser
provides = moonarch
conflicts = moonarch
backup = etc/zsh/zshrc.moonarch
source = git+https://gitea.moonarch.de/nevaforget/moonarch.git
sha256sums = SKIP
pkgname = moonarch-git
+32 -12
View File
@@ -4,8 +4,8 @@
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=moonarch-git pkgname=moonarch-git
pkgver=r114.89c3a92 pkgver=r129.d101b23
pkgrel=10 pkgrel=15
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"
@@ -14,9 +14,10 @@ install=moonarch.install
depends=( depends=(
# Moonarch ecosystem (own registry) # Moonarch ecosystem (own registry)
'moongreet-git' 'moongreet'
'moonlock-git' 'moonlock'
'moonset-git' 'moonset'
'sweet-cursors'
# Compositor & session # Compositor & session
'niri' 'niri'
@@ -195,6 +196,21 @@ package() {
install -Dm644 defaults/xdg/swaync/style.css \ install -Dm644 defaults/xdg/swaync/style.css \
"$pkgdir/usr/share/moonarch/swaync/style.css" "$pkgdir/usr/share/moonarch/swaync/style.css"
# --- mpv config (owned by moonarch-git; ModernZ color overrides via script-opts-append) ---
install -Dm644 defaults/etc/mpv/mpv.conf "$pkgdir/etc/mpv/mpv.conf"
# --- Fontconfig generic-family defaults (owned; number 65 loads after 60-latin to win) ---
install -Dm644 defaults/etc/fonts/conf.d/65-moonarch-fonts.conf \
"$pkgdir/etc/fonts/conf.d/65-moonarch-fonts.conf"
# --- xdg-desktop-portal Inhibit override (owned; higher priority than niri's
# /usr/share default). xdg-desktop-portal-gtk reports the Inhibit interface
# as success even though nothing implements it under Niri, so Firefox/Waterfox
# skips the native Wayland idle-inhibit. With no backend the browser falls back
# to zwp_idle_inhibit, which Niri honors -> windowed video keeps the screen awake. ---
install -Dm644 defaults/etc/xdg-desktop-portal/niri-portals.conf \
"$pkgdir/etc/xdg-desktop-portal/niri-portals.conf"
# --- Reference configs for greetd/moongreet (deployed by .install, not owned) --- # --- Reference configs for greetd/moongreet (deployed by .install, not owned) ---
install -Dm644 defaults/etc/greetd/config.toml \ install -Dm644 defaults/etc/greetd/config.toml \
"$pkgdir/usr/share/moonarch/greetd/config.toml" "$pkgdir/usr/share/moonarch/greetd/config.toml"
@@ -206,17 +222,21 @@ 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
# --- udev rules -> /usr/lib/udev/rules.d/ ---
install -Dm644 defaults/etc/udev/rules.d/90-moonarch-battery.rules \
"$pkgdir/usr/lib/udev/rules.d/90-moonarch-battery.rules"
# --- Systemd system service (battery conservation restore) -> /usr/lib/systemd/system/ --- # --- Systemd system service (battery conservation restore) -> /usr/lib/systemd/system/ ---
install -Dm644 defaults/etc/systemd/system/moonarch-batsaver.service \ install -Dm644 defaults/etc/systemd/system/moonarch-batsaver.service \
"$pkgdir/usr/lib/systemd/system/moonarch-batsaver.service" "$pkgdir/usr/lib/systemd/system/moonarch-batsaver.service"
+5
View File
@@ -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() {
@@ -1,7 +1,8 @@
pkgbase = moongreet-git pkgbase = moongreet
pkgdesc = A greetd greeter for Wayland with GTK4 and Layer Shell pkgdesc = A greetd greeter for Wayland with GTK4 and Layer Shell
pkgver = 0.10.0.r0.gce9f219 pkgver = 0.10.1
pkgrel = 1 pkgrel = 1
epoch = 1
url = https://gitea.moonarch.de/nevaforget/greetd-moongreet url = https://gitea.moonarch.de/nevaforget/greetd-moongreet
install = moongreet.install install = moongreet.install
arch = x86_64 arch = x86_64
@@ -14,9 +15,9 @@ pkgbase = moongreet-git
depends = gtk4 depends = gtk4
depends = gtk4-layer-shell depends = gtk4-layer-shell
depends = greetd depends = greetd
provides = moongreet conflicts = moongreet-git
conflicts = moongreet replaces = moongreet-git
source = git+https://gitea.moonarch.de/nevaforget/greetd-moongreet.git source = git+https://gitea.moonarch.de/nevaforget/greetd-moongreet.git#tag=v0.10.1
sha256sums = SKIP sha256sums = SKIP
pkgname = moongreet-git pkgname = moongreet
+8 -12
View File
@@ -1,11 +1,12 @@
# ABOUTME: PKGBUILD for Moongreet — greetd greeter for Wayland. # ABOUTME: PKGBUILD for Moongreet — greetd greeter for Wayland.
# ABOUTME: Builds from git source with automatic version detection. # ABOUTME: Builds from a versioned git tag.
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=moongreet-git pkgname=moongreet
pkgver=0.10.0.r0.gce9f219 epoch=1
pkgrel=3 pkgver=0.10.1
pkgrel=1
pkgdesc="A greetd greeter for Wayland with GTK4 and Layer Shell" pkgdesc="A greetd greeter for Wayland with GTK4 and Layer Shell"
arch=('x86_64') arch=('x86_64')
url="https://gitea.moonarch.de/nevaforget/greetd-moongreet" url="https://gitea.moonarch.de/nevaforget/greetd-moongreet"
@@ -22,17 +23,12 @@ makedepends=(
'gtk4-layer-shell' 'gtk4-layer-shell'
'pkgconf' 'pkgconf'
) )
provides=('moongreet') replaces=('moongreet-git')
conflicts=('moongreet') conflicts=('moongreet-git')
install=moongreet.install install=moongreet.install
source=("git+${url}.git") source=("git+${url}.git#tag=v$pkgver")
sha256sums=('SKIP') sha256sums=('SKIP')
pkgver() {
cd "$srcdir/greetd-moongreet"
git describe --long --tags | sed 's/^v//;s/-/.r/;s/-/./'
}
build() { build() {
cd "$srcdir/greetd-moongreet" cd "$srcdir/greetd-moongreet"
cargo build --release cargo build --release
+7 -7
View File
@@ -1,7 +1,7 @@
pkgbase = moonlock-git pkgbase = moonlock
pkgdesc = A secure Wayland lockscreen with GTK4, PAM and fingerprint support pkgdesc = A secure Wayland lockscreen with GTK4, PAM and fingerprint support
pkgver = 0.6.9.r1.g3f4448c pkgver = 0.6.19
pkgrel = 5 pkgrel = 2
url = https://gitea.moonarch.de/nevaforget/moonlock url = https://gitea.moonarch.de/nevaforget/moonlock
arch = x86_64 arch = x86_64
license = MIT license = MIT
@@ -18,9 +18,9 @@ pkgbase = moonlock-git
depends = pam depends = pam
depends = systemd-libs depends = systemd-libs
optdepends = fprintd: fingerprint authentication support optdepends = fprintd: fingerprint authentication support
provides = moonlock conflicts = moonlock-git
conflicts = moonlock replaces = moonlock-git
source = git+https://gitea.moonarch.de/nevaforget/moonlock.git source = git+https://gitea.moonarch.de/nevaforget/moonlock.git#tag=v0.6.17
sha256sums = SKIP sha256sums = SKIP
pkgname = moonlock-git pkgname = moonlock
+7 -12
View File
@@ -1,11 +1,11 @@
# ABOUTME: PKGBUILD for Moonlock — secure Wayland lockscreen. # ABOUTME: PKGBUILD for Moonlock — secure Wayland lockscreen.
# ABOUTME: Builds from git source with automatic version detection. # ABOUTME: Builds from a versioned git tag.
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=moonlock-git pkgname=moonlock
pkgver=0.6.9.r1.g3f4448c pkgver=0.6.19
pkgrel=5 pkgrel=2
pkgdesc="A secure Wayland lockscreen with GTK4, PAM and fingerprint support" pkgdesc="A secure Wayland lockscreen with GTK4, PAM and fingerprint support"
arch=('x86_64') arch=('x86_64')
url="https://gitea.moonarch.de/nevaforget/moonlock" url="https://gitea.moonarch.de/nevaforget/moonlock"
@@ -29,16 +29,11 @@ makedepends=(
optdepends=( optdepends=(
'fprintd: fingerprint authentication support' 'fprintd: fingerprint authentication support'
) )
provides=('moonlock') replaces=('moonlock-git')
conflicts=('moonlock') conflicts=('moonlock-git')
source=("git+${url}.git") source=("git+${url}.git#tag=v$pkgver")
sha256sums=('SKIP') sha256sums=('SKIP')
pkgver() {
cd "$srcdir/moonlock"
git describe --long --tags | sed 's/^v//;s/-/.r/;s/-/./'
}
build() { build() {
cd "$srcdir/moonlock" cd "$srcdir/moonlock"
cargo build --release cargo build --release
+7 -7
View File
@@ -1,7 +1,7 @@
pkgbase = moonset-git pkgbase = moonset
pkgdesc = A Wayland session power menu with GTK4 and Layer Shell pkgdesc = A Wayland session power menu with GTK4 and Layer Shell
pkgver = 0.8.2.r0.gd030f13 pkgver = 0.9.1
pkgrel = 2 pkgrel = 1
url = https://gitea.moonarch.de/nevaforget/moonset url = https://gitea.moonarch.de/nevaforget/moonset
arch = x86_64 arch = x86_64
license = MIT license = MIT
@@ -12,9 +12,9 @@ pkgbase = moonset-git
makedepends = pkgconf makedepends = pkgconf
depends = gtk4 depends = gtk4
depends = gtk4-layer-shell depends = gtk4-layer-shell
provides = moonset conflicts = moonset-git
conflicts = moonset replaces = moonset-git
source = git+https://gitea.moonarch.de/nevaforget/moonset.git source = git+https://gitea.moonarch.de/nevaforget/moonset.git#tag=v0.8.5
sha256sums = SKIP sha256sums = SKIP
pkgname = moonset-git pkgname = moonset
+7 -12
View File
@@ -1,11 +1,11 @@
# ABOUTME: PKGBUILD for Moonset — Wayland session power menu. # ABOUTME: PKGBUILD for Moonset — Wayland session power menu.
# ABOUTME: Builds from git source with automatic version detection. # ABOUTME: Builds from a versioned git tag.
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=moonset-git pkgname=moonset
pkgver=0.8.2.r0.gd030f13 pkgver=0.9.1
pkgrel=2 pkgrel=1
pkgdesc="A Wayland session power menu with GTK4 and Layer Shell" pkgdesc="A Wayland session power menu with GTK4 and Layer Shell"
arch=('x86_64') arch=('x86_64')
url="https://gitea.moonarch.de/nevaforget/moonset" url="https://gitea.moonarch.de/nevaforget/moonset"
@@ -21,16 +21,11 @@ makedepends=(
'gtk4-layer-shell' 'gtk4-layer-shell'
'pkgconf' 'pkgconf'
) )
provides=('moonset') replaces=('moonset-git')
conflicts=('moonset') conflicts=('moonset-git')
source=("git+${url}.git") source=("git+${url}.git#tag=v$pkgver")
sha256sums=('SKIP') sha256sums=('SKIP')
pkgver() {
cd "$srcdir/moonset"
git describe --long --tags | sed 's/^v//;s/-/.r/;s/-/./'
}
build() { build() {
cd "$srcdir/moonset" cd "$srcdir/moonset"
cargo build --release cargo build --release
+6 -6
View File
@@ -1,6 +1,6 @@
pkgbase = sshfsc-git pkgbase = sshfsc
pkgdesc = Quickly mount remote systems via SSHFS based on your ssh_config pkgdesc = Quickly mount remote systems via SSHFS based on your ssh_config
pkgver = 0.1.0.r2.gba89562 pkgver = 0.2.0
pkgrel = 1 pkgrel = 1
url = https://gitea.moonarch.de/nevaforget/sshfs_connect url = https://gitea.moonarch.de/nevaforget/sshfs_connect
arch = x86_64 arch = x86_64
@@ -8,9 +8,9 @@ pkgbase = sshfsc-git
makedepends = git makedepends = git
makedepends = go makedepends = go
depends = sshfs depends = sshfs
provides = sshfsc conflicts = sshfsc-git
conflicts = sshfsc replaces = sshfsc-git
source = git+https://gitea.moonarch.de/nevaforget/sshfs_connect.git source = git+https://gitea.moonarch.de/nevaforget/sshfs_connect.git#tag=v0.2.0
sha256sums = SKIP sha256sums = SKIP
pkgname = sshfsc-git pkgname = sshfsc
+6 -11
View File
@@ -1,10 +1,10 @@
# ABOUTME: PKGBUILD for sshfsc — quick SSHFS mounter driven by ssh_config. # ABOUTME: PKGBUILD for sshfsc — quick SSHFS mounter driven by ssh_config.
# ABOUTME: Builds from git source with automatic version detection. # ABOUTME: Builds from a versioned git tag.
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=sshfsc-git pkgname=sshfsc
pkgver=0.1.0.r2.gba89562 pkgver=0.2.0
pkgrel=1 pkgrel=1
pkgdesc="Quickly mount remote systems via SSHFS based on your ssh_config" pkgdesc="Quickly mount remote systems via SSHFS based on your ssh_config"
arch=('x86_64') arch=('x86_64')
@@ -17,16 +17,11 @@ makedepends=(
'git' 'git'
'go' 'go'
) )
provides=('sshfsc') replaces=('sshfsc-git')
conflicts=('sshfsc') conflicts=('sshfsc-git')
source=("git+${url}.git") source=("git+${url}.git#tag=v$pkgver")
sha256sums=('SKIP') sha256sums=('SKIP')
pkgver() {
cd "$srcdir/sshfs_connect"
git describe --long --tags | sed 's/^v//;s/-/.r/;s/-/./'
}
build() { build() {
cd "$srcdir/sshfs_connect" cd "$srcdir/sshfs_connect"
export CGO_CPPFLAGS="${CPPFLAGS}" export CGO_CPPFLAGS="${CPPFLAGS}"
+2 -1
View File
@@ -4,8 +4,9 @@
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=sweet-cursors-git pkgname=sweet-cursors-git
epoch=1
pkgver=r1.4b49c35 pkgver=r1.4b49c35
pkgrel=2 pkgrel=4
pkgdesc="Sweet cursor theme" pkgdesc="Sweet cursor theme"
arch=('any') arch=('any')
url="https://gitea.moonarch.de/nevaforget/Sweet-cursors" url="https://gitea.moonarch.de/nevaforget/Sweet-cursors"