Compare commits

..

117 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
nevaforget 6dea33bc22 Revert "ci(build): persist cargo registry via CARGO_HOME on existing volume"
This reverts commit bed8aa7f8879a0269d28349b82b1a2c6e8d58b9c.
2026-04-24 11:41:43 +02:00
nevaforget 11e8e1355a ci(build): persist cargo registry via CARGO_HOME on existing volume
The compose mount `./runner-cargo-target:/cache/target` already
persists the target dir. Set CARGO_HOME to a subdir of that mount so
the downloaded-crates index + git cache survive too — otherwise every
build re-fetches every dep. No server-side compose change needed.
2026-04-24 11:41:43 +02:00
nevaforget 39b04d3829 ci(build): drop unverified OOM throttle, run cargo with -j2
The previous CARGO_BUILD_JOBS=1 + nice + ionice throttling rested on an
assumed OOM diagnosis for run 86 (2026-04-23) that was never confirmed
via dmesg/journalctl. Build times tripled for no verified reason.
Remove the throttle; if a real OOM is captured in the future, re-add
limits with actual evidence.
2026-04-24 11:41:43 +02:00
pkgver-bot 5b6f35f480 chore(moongreet-git): bump pkgver to 0.10.0.r0.gce9f219
Build and publish packages / build-and-publish (push) Failing after 40s
2026-04-24 09:30:38 +00:00
pkgver-bot 5b4ad37f6d chore(moonarch-git): bump pkgver to r114.89c3a92
Build and publish packages / build-and-publish (push) Successful in 15s
2026-04-24 08:54:04 +00:00
pkgver-bot 5633235e57 chore(moongreet-git): bump pkgver to 0.8.5.r1.g29ce185
Build and publish packages / build-and-publish (push) Successful in 10m51s
2026-04-24 06:59:37 +00:00
pkgver-bot 45d0a67572 chore(moonarch-git): bump pkgver to r113.e4ea267
Build and publish packages / build-and-publish (push) Successful in 12s
2026-04-24 06:59:20 +00:00
pkgver-bot 6cb544202f chore(moongreet-git): bump pkgver to 0.8.5.r0.g91b4289
Build and publish packages / build-and-publish (push) Successful in 9m4s
2026-04-23 12:14:58 +00:00
nevaforget 8db3a02bc6 chore(moongreet-git): bump pkgrel to retrigger build
Build and publish packages / build-and-publish (push) Successful in 12m4s
Run 88 died at 13:08 (container stopped externally, no OOM).
Runner recreated with 2.5g/2cpu limits. Retry only moongreet.
2026-04-23 13:29:20 +02:00
nevaforget 5fc1781262 fix(pkgbuild): honour CARGO_TARGET_DIR in install path
Build and publish packages / build-and-publish (push) Failing after 14m14s
The act_runner exports CARGO_TARGET_DIR=/cache/target for cache
persistence, but the three Rust-app PKGBUILDs hardcoded
target/release/<bin>. Run 87 compiled 8 min then failed at
install stage. Use ${CARGO_TARGET_DIR:-target} so both CI and
local makepkg work.
2026-04-23 13:04:31 +02:00
nevaforget cc5cf1c1e1 chore(moongreet-git): bump pkgrel to retrigger build
Build and publish packages / build-and-publish (push) Failing after 8m52s
Run 86 failed mid-compile (OOM on gitea host). Rebuild on the
new throttled pipeline (CARGO_BUILD_JOBS=1, nice/ionice).
2026-04-23 12:52:15 +02:00
nevaforget 972c832ec6 ci(build): single-threaded low-priority makepkg to spare host
Parallel Rust builds have OOM-killed the Gitea host twice
(2026-04-20, 2026-04-23 run 86). Force CARGO_BUILD_JOBS=1,
MAKEFLAGS=-j1, and wrap makepkg with nice+ionice so the
act_runner can't drown the shared host.
2026-04-23 12:51:20 +02:00
pkgver-bot ce69a3ce73 chore(moongreet-git): bump pkgver to 0.8.3.r1.g97165d9
Build and publish packages / build-and-publish (push) Failing after 24m31s
2026-04-23 09:02:34 +00:00
pkgver-bot b7a019dfb4 chore(moonarch-git): bump pkgver to r112.8485a63
Build and publish packages / build-and-publish (push) Successful in 12s
2026-04-23 06:09:30 +00:00
pkgver-bot 2c776bd38c chore(moonarch-git): bump pkgver to r111.6e14258
Build and publish packages / build-and-publish (push) Successful in 15s
2026-04-22 07:03:46 +00:00
pkgver-bot fedc004be7 chore(moonarch-git): bump pkgver to r108.c2cee85
Build and publish packages / build-and-publish (push) Successful in 14s
2026-04-21 08:24:46 +00:00
nevaforget 8d056eac0f fix(pkg): declare gtk4 build deps for GTK rust apps
Build and publish packages / build-and-publish (push) Successful in 16m7s
moongreet/moonlock/moonset link against gtk4 headers at build time.
The CI workflow runs `makepkg -sfd` and only installs makedepends
explicitly — with gtk4 listed only in depends, the build container
had no cairo.pc / gtk4.pc and cairo-sys-rs failed to find the
system library. Add gtk4, gtk4-layer-shell, pkgconf (plus
gtk-session-lock + pam for moonlock) to makedepends.

This previously only worked because repeated `makepkg -s` runs
left the libs installed in the act_runner container filesystem.
Recreating the runner today exposed the latent gap.
2026-04-21 10:03:22 +02:00
nevaforget 07be812dbb feat(moongreet-git): install moongreet polkit rule
Build and publish packages / build-and-publish (push) Failing after 52s
Ships config/polkit/50-moongreet-power.rules (new in moongreet v0.8.3)
to /usr/share/polkit-1/rules.d/ so the greeter user can reboot and
power off without authentication.

Reset pkgrel to 1 — the pkgver bump to 0.8.3 will be picked up by
pkgver-bot after the moongreet tag is pushed.
2026-04-21 09:15:54 +02:00
nevaforget da1e81aa8d refactor(moonarch-git): hard-dep ecosystem + Arch essentials, pkgrel 10
Promote moongreet-git/moonlock-git/moonset-git and ~30 Arch-repo
essentials (networkmanager, bluez, wlsunset, xwayland-satellite,
file-manager stack, portals, zsh plugins, CLI tools, neovim, git,
ufw, fwupd, etc.) from optdepends (or absent) to hard depends.

Previously a fresh `paru -S moonarch-git` installed the configs but
none of the packages they depend on, producing a non-functional
Moonarch — no greeter, no lockscreen, no launcher, no network stack.

AUR packages cannot be hard depends (pacman cannot resolve AUR),
so they remain in moonarch's packages/aur.txt and post-install.sh
pulls them explicitly. optdepends trimmed to real extras —
docker, rustup (for dev), waterfox.
2026-04-21 09:15:25 +02:00
pkgver-bot e62cfe6558 chore(moongreet-git): bump pkgver to 0.8.3.r0.g48d363b
Build and publish packages / build-and-publish (push) Failing after 16m38s
2026-04-21 07:12:48 +00:00
pkgver-bot 1fe9ac8e08 chore(moonarch-git): bump pkgver to r106.0a38347
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-20 12:20:08 +00:00
nevaforget b4ee733827 feat(install): drop paru --pkgbuilds fallback, registry is the only path
Build and publish packages / build-and-publish (push) Successful in 12s
The moonarch.install hook used to ensure /etc/paru.conf had Mode = arp
and a [moonarch-pkgbuilds] section. Both exist to let paru resolve
moonarch packages from a PKGBUILD repo — a second mechanism parallel
to the Arch registry, redundant now that the registry DB is stable.

Hook now strips the legacy config on next upgrade. Bump pkgrel so every
installed system picks up the cleanup.
2026-04-20 14:19:01 +02:00
nevaforget 675c8bee45 docs: trim README to registry-only flow, log CI zombie-fix decisions
README now describes the Gitea Arch registry path as the canonical
install/update mechanism — the paru --pkgbuilds fallback is no longer
advertised to users. Adds troubleshooting for missing updates (check
the repo DB directly) and file conflicts.

DECISIONS.md records why the build-and-publish workflow now wipes all
existing versions before upload, and why three packages had to be
re-registered manually.
2026-04-20 14:15:44 +02:00
nevaforget c2ccdccff4 fix(ci): wipe all existing versions before upload to kill zombie DB entries
Build and publish packages / build-and-publish (push) Successful in 18s
Gitea's Arch registry doesn't regenerate the repo DB on pkgver change —
old entries linger as zombies (e.g. moonarch-git r99 stuck in moonarch.db
even though only r105 exists as a package). List all versions of each
built package and DELETE them before the upload so the DB gets rebuilt
cleanly. Bump moonarch-git pkgrel to force a rebuild and exercise the fix.
2026-04-20 14:09:33 +02:00
nevaforget ea44cb33c4 chore: bump pkgrel for moongreet/moonset/sweet-cursors
Build and publish packages / build-and-publish (push) Successful in 12m8s
Trigger build-and-publish for three packages never uploaded to the
Arch registry. Prior CI runs for these failed before the makedepends
fix landed.
2026-04-20 13:36:05 +02:00
nevaforget 80f0ec9e93 chore(moonarch-git): bump pkgrel to 7 to capture post-restart upload log
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-20 13:18:50 +02:00
nevaforget 2e7c2ee92a chore(moonarch-git): bump pkgrel to 6 to surface Gitea upload response
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-20 13:04:13 +02:00
nevaforget 8066091c43 debug(ci): always echo upload response body, not only on failure 2026-04-20 12:58:04 +02:00
nevaforget 46b28193c6 chore(moonarch-git): bump pkgrel to 5 to trigger build with hard-fail upload
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-20 12:48:40 +02:00
nevaforget 41a22d6281 fix(ci): fail hard when registry upload returns non-2xx
curl -sf was silencing upload errors: r105 was 'Published' six times
in a row but never landed in the registry. Capture the HTTP status
and abort on non-2xx so the run goes red and the response body shows
up in the log.
2026-04-20 12:47:26 +02:00
nevaforget e49d4e48b1 chore(moonarch-git): bump pkgrel to 4 after CI makedepends fix
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-20 12:45:08 +02:00
nevaforget 13567819ca fix(ci): source PKGBUILD to read makedepends reliably 2026-04-20 12:43:44 +02:00
nevaforget 386046b98c chore(moonarch-git): bump pkgrel to 3 to retrigger build after makedeps CI fix
Build and publish packages / build-and-publish (push) Failing after 1s
2026-04-20 12:39:22 +02:00
nevaforget 71a94ac74e fix(ci): install only makedepends, skip full depends via -d
moonarch-git's runtime depends include AUR-only packages (stasis,
auto-cpufreq, ttf-ubuntusans-nerd) that plain pacman cannot resolve,
so `makepkg -s` fails with "Could not resolve all dependencies" —
even though those runtime deps aren't needed to build the package.

Extract makedepends from PKGBUILD, install them targeted (cargo/go
for Rust and Go packages; empty for moonarch-git), then run makepkg
with -d so it skips the full dep check. Rust packages still get their
compiler, moonarch-git builds without needing the AUR world.
2026-04-20 12:38:40 +02:00
nevaforget 2c748ec5be chore(moonarch-git): bump pkgrel to 2 to republish r105 (i18n fix)
Build and publish packages / build-and-publish (push) Failing after 5s
2026-04-20 12:33:35 +02:00
nevaforget 4cbc8c9956 chore(moonlock-git): bump pkgrel to 5 to verify multi-artifact upload
Build and publish packages / build-and-publish (push) Successful in 4m13s
2026-04-20 11:35:09 +02:00
nevaforget 6c89ffd9cd fix(ci): upload every makepkg artifact, not just the first
PKGBUILDs with options=('debug') produce a main + -debug split pair.
The previous `ls -t | head -1` only uploaded one, and which one won
was mtime-dependent. Loop over all *.pkg.tar.zst and parse pkgname
per file (so -debug gets its own registry entry).
2026-04-20 11:34:59 +02:00
nevaforget 87336b7613 chore(moonlock-git): bump pkgrel to 4 to verify CI fix
Build and publish packages / build-and-publish (push) Successful in 4m16s
2026-04-20 11:27:37 +02:00
nevaforget 30f8c4100f docs(ci): harden pacman -Sy comment against future -Syu regressions
Explicit warning in the workflow so nobody reintroduces the -Syu that
took the Gitea host down on 2026-04-20.
2026-04-20 11:26:01 +02:00
nevaforget 8d1dacd6fa fix(ci): use pacman -Sy instead of -Syu to avoid host I/O overload
Previous -Syu triggered a full system upgrade inside the runner
container, which together with the concurrent Rust build saturated
the shared host and took Gitea down. -Sy just refreshes the package
DB, which is all makepkg -s actually needs to resolve current deps.
2026-04-20 10:04:34 +02:00
nevaforget 805b3e9318 chore(moonlock-git): bump pkgrel to 3 to trigger rebuild after CI fix
Build and publish packages / build-and-publish (push) Failing after 18m13s
2026-04-20 09:44:04 +02:00
nevaforget aab4b75352 fix(ci): pacman -Syu before build to refresh stale package DB
Runner container has a cached pacman DB that lists package versions
already rotated off the mirrors, causing 404s when makepkg -s tries
to pull makedepends (gtk4, mesa, llvm-libs). Sync the DB first.
2026-04-20 09:43:45 +02:00
nevaforget 86327fd1f2 chore(moonlock-git): bump pkgrel to 2 to trigger rebuild
Build and publish packages / build-and-publish (push) Failing after 5s
Previous build failed (cargo missing due to makepkg -d flag). CI fixed
in 49c7031. Bump pkgrel so the registry gets a fresh artifact.
2026-04-20 09:41:50 +02:00
nevaforget 49c7031315 fix(ci): drop -d from makepkg so makedepends get installed
makepkg -sfd skipped dependency checks, preventing `-s` from pulling
in rust/cargo (moonlock/moongreet/moonset) and go (sshfsc). Builds
failed with `cargo: command not found`. Remove `-d`; `-s` now installs
makedepends via pacman before the build.
2026-04-20 09:39:11 +02:00
pkgver-bot 7e3669c3df chore(moonarch-git): bump pkgver to r105.f4f6ede
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-19 13:49:43 +00:00
pkgver-bot 77f5bc295b chore(sshfsc-git): bump pkgver to 0.1.0.r2.gba89562
Build and publish packages / build-and-publish (push) Failing after 4s
2026-04-19 13:30:16 +00:00
nevaforget 2ff28405d5 chore(sshfsc-git): bump pkgver to 0.1.0.r0.geb93777
Build and publish packages / build-and-publish (push) Failing after 4s
2026-04-19 15:16:53 +02:00
nevaforget d74359f238 feat(sshfsc-git): add package
Build and publish packages / build-and-publish (push) Failing after 5s
2026-04-19 14:38:22 +02:00
pkgver-bot 5912bab251 chore(moonarch-git): bump pkgver to r102.324dda0
Build and publish packages / build-and-publish (push) Successful in 11s
2026-04-15 12:09:09 +00:00
pkgver-bot 5ca1cc4c60 chore(moonarch-git): bump pkgver to r101.0433f08
Build and publish packages / build-and-publish (push) Successful in 10s
2026-04-14 15:42:49 +00:00
pkgver-bot 2e19f18a4a chore(moonarch-git): bump pkgver to r100.9bc753e
Build and publish packages / build-and-publish (push) Successful in 10s
2026-04-11 19:04:01 +00:00
pkgver-bot 74dcf3e8cb chore(moonarch-git): bump pkgver to r99.a360d12
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-10 14:16:46 +00:00
nevaforget ed3557e4cd feat(moonarch-git): add moonarch-doctor + moondoc symlink
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-10 08:20:10 +02:00
nevaforget afcc3a5a05 feat(moonarch-git): add moonup symlink for moonarch-update
Build and publish packages / build-and-publish (push) Successful in 10s
2026-04-10 07:35:30 +02:00
pkgver-bot 1b2b566ff8 chore(moonarch-git): bump pkgver to r95.ab06672
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-10 05:34:28 +00:00
nevaforget 13e7c18403 feat(moonarch-git): add jq dependency for waybar config merger
Build and publish packages / build-and-publish (push) Successful in 10s
2026-04-09 17:05:19 +02:00
pkgver-bot c6e2d1f6ce chore(moonarch-git): bump pkgver to r94.2363e76
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-09 15:04:58 +00:00
pkgver-bot 7e000f4c9e chore(moongreet-git): bump pkgver to 0.8.2.r0.gcd42df1
Build and publish packages / build-and-publish (push) Failing after 4s
2026-04-09 13:07:44 +00:00
pkgver-bot d905761082 chore(moonlock-git): bump pkgver to 0.6.9.r1.g3f4448c
Build and publish packages / build-and-publish (push) Failing after 4s
2026-04-09 12:52:18 +00:00
pkgver-bot 5128d7c15f chore(moonarch-git): bump pkgver to r93.4dd8aae
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-09 10:16:24 +00:00
pkgver-bot 2b2780d606 chore(moonarch-git): bump pkgver to r92.47ae8d5
Build and publish packages / build-and-publish (push) Successful in 10s
2026-04-09 10:11:24 +00:00
pkgver-bot 36f54bac31 chore(moonarch-git): bump pkgver to r91.4c60913
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-09 10:08:59 +00:00
pkgver-bot f7467cc2e6 chore(moonarch-git): bump pkgver to r90.f6869c9
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-09 09:48:06 +00:00
pkgver-bot 7f46827c37 chore(moonarch-git): bump pkgver to r89.48b0de0
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-09 09:45:06 +00:00
pkgver-bot 6bfcdfb729 chore(moonarch-git): bump pkgver to r88.b6beabe
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-09 09:34:22 +00:00
pkgver-bot a851b78d1b chore(moonarch-git): bump pkgver to r87.8ddbb23
Build and publish packages / build-and-publish (push) Successful in 10s
2026-04-09 08:55:50 +00:00
pkgver-bot f4d40c876e chore(moonarch-git): bump pkgver to r85.d815e21
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-08 15:03:41 +00:00
pkgver-bot 43f8e26916 chore(moonarch-git): bump pkgver to r84.6d3a7c8
Build and publish packages / build-and-publish (push) Successful in 10s
2026-04-08 12:11:08 +00:00
nevaforget 0abdf15624 fix(moonarch-git): migrate cliphist.service to split text/image services
pre_upgrade hook removes old cliphist.service symlinks before the
package replaces it with cliphist-text and cliphist-image services.
2026-04-08 12:44:42 +02:00
pkgver-bot fb3f668b66 chore(moonarch-git): bump pkgver to r83.ac2b210
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-08 10:36:38 +00:00
pkgver-bot ae2abd2f75 chore(moonarch-git): bump pkgver to r82.e1e80ca
Build and publish packages / build-and-publish (push) Successful in 9s
2026-04-08 08:46:07 +00:00
19 changed files with 593 additions and 157 deletions
+114 -20
View File
@@ -29,40 +29,134 @@ jobs:
echo "Changed packages: $CHANGED" echo "Changed packages: $CHANGED"
# Sync pacman DB so makepkg -s can resolve current deps.
# NEVER change this to -Syu. The runner shares I/O with the host
# (act_runner runs in network-host mode on the Gitea server). A full
# system upgrade here took the host down on 2026-04-20 and required
# a hard reboot + Contabo abuse-block recovery. -Sy syncs the DB
# only; -s picks targeted makedepends via pacman.
sudo pacman -Sy --noconfirm
for pkg in $CHANGED; do for pkg in $CHANGED; do
echo "==> Building $pkg" echo "==> Building $pkg"
cd "$pkg" cd "$pkg"
# Install makedepends manually (cargo, go, …) and skip the full
# depends check via -d. Rationale: moonarch-git's runtime depends
# include AUR-only packages (stasis, auto-cpufreq, ttf-ubuntusans-nerd)
# which pacman can't resolve. Those deps aren't needed at build time.
# Source the PKGBUILD in a subshell to read the array robustly —
# awk/grep parsing breaks on single-line vs multi-line formats.
MAKEDEPS=$(bash -c 'source ./PKGBUILD 2>/dev/null; printf "%s " "${makedepends[@]}"')
if [ -n "${MAKEDEPS// }" ]; then
# shellcheck disable=SC2086
sudo pacman -S --needed --noconfirm $MAKEDEPS
fi
# Single-threaded build to keep memory peak below the 8 GiB
# host budget. Run 108 (2026-04-28) hit a verified global OOM
# (constraint=CONSTRAINT_NONE in journalctl, rustc killed at
# 1.7 GiB RSS while host was already at 6.2 GiB used / 1.6 GiB
# available). Two parallel rustc workers blow that reserve.
# Container-side mem_limit doesn't help because the kill is
# 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
# Find the built package file # makepkg can emit multiple artifacts per build (main + -debug
PKG_FILE=$(ls -t *.pkg.tar.zst 2>/dev/null | head -1) # split package). Upload each. Arch filename convention:
if [ -z "$PKG_FILE" ]; then # <pkgname>-<pkgver>-<pkgrel>-<arch>.pkg.tar.zst; pkgver never
# contains '-', so we can strip from the right.
shopt -s nullglob
PKG_FILES=(*.pkg.tar.zst)
shopt -u nullglob
if [ "${#PKG_FILES[@]}" -eq 0 ]; then
echo "ERROR: No package file found for $pkg" echo "ERROR: No package file found for $pkg"
cd .. cd ..
continue continue
fi fi
# Extract version for delete endpoint # Collect unique package names + the version we just built for
PKG_NAME=$(grep '^pkgname=' PKGBUILD | cut -d= -f2) # each. We delete only ZOMBIE versions (anything in the registry
PKG_VER=$(grep '^pkgver=' PKGBUILD | cut -d= -f2) # for this name that is NOT the version we just built) to clear
PKG_REL=$(grep '^pkgrel=' PKGBUILD | cut -d= -f2) # the Gitea Arch DB which doesn't evict on pkgver change.
PKG_ARCH=$(grep '^arch=' PKGBUILD | sed "s/.*('\(.*\)').*/\1/") #
FULL_VER="${PKG_VER}-${PKG_REL}" # 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 KEEP_VERS
for PKG_FILE in "${PKG_FILES[@]}"; do
base="${PKG_FILE%.pkg.tar.zst}"
# Strip arch (last -seg), pkgrel (next), pkgver (next) → name.
# 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
echo "==> Uploading $PKG_FILE ($PKG_NAME $FULL_VER $PKG_ARCH)" sudo pacman -S --needed --noconfirm jq
# Delete old version if it exists (ignore 404) for PKG_NAME in "${!SEEN_NAMES[@]}"; do
curl -s -o /dev/null -X DELETE \ KEEP="${KEEP_VERS[$PKG_NAME]}"
-H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \ echo "==> Clearing zombie versions of $PKG_NAME (keep: $KEEP)"
"https://gitea.moonarch.de/api/packages/nevaforget/arch/moonarch/${PKG_NAME}/${FULL_VER}/${PKG_ARCH}" || true VERSIONS=$(curl -s \
-H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \
"https://gitea.moonarch.de/api/v1/packages/nevaforget?type=arch&q=${PKG_NAME}&page=1&limit=100" \
| jq -r --arg n "$PKG_NAME" --arg t "arch" \
'.[] | select(.name==$n and .type==$t) | .version')
for V in $VERSIONS; do
if [ "$V" = "$KEEP" ]; then
echo " skip $PKG_NAME@$V (just built)"
continue
fi
echo " delete $PKG_NAME@$V"
DEL_CODE=$(curl -s -o /dev/null -w '%{http_code}' -X DELETE \
-H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \
"https://gitea.moonarch.de/api/v1/packages/nevaforget/arch/${PKG_NAME}/${V}")
echo " HTTP $DEL_CODE"
done
done
# Upload new version for PKG_FILE in "${PKG_FILES[@]}"; do
curl -sf \ base="${PKG_FILE%.pkg.tar.zst}"
-H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \ PKG_ARCH="${base##*-}"
--upload-file "$PKG_FILE" \ base="${base%-*}"
"https://gitea.moonarch.de/api/packages/nevaforget/arch/moonarch" PKG_REL="${base##*-}"
base="${base%-*}"
PKG_VER="${base##*-}"
PKG_NAME="${base%-*}"
FULL_VER="${PKG_VER}-${PKG_REL}"
echo "==> Published $PKG_NAME $FULL_VER" echo "==> Uploading $PKG_FILE ($PKG_NAME $FULL_VER $PKG_ARCH)"
# Upload new version. Capture HTTP status — curl -sf alone
# hides the response, and a silent failure lets the run green
# while the registry stays stale.
HTTP_CODE=$(curl -s -w '%{http_code}' -o /tmp/upload.log \
-H "Authorization: token ${{ secrets.PKG_REGISTRY_TOKEN }}" \
--upload-file "$PKG_FILE" \
"https://gitea.moonarch.de/api/packages/nevaforget/arch/moonarch")
echo "--- server response (HTTP $HTTP_CODE) ---"
cat /tmp/upload.log
echo
echo "-----------------------"
if [[ ! "$HTTP_CODE" =~ ^2 ]]; then
echo "ERROR: Upload failed with HTTP $HTTP_CODE for $PKG_FILE"
exit 1
fi
echo "==> Published $PKG_NAME $FULL_VER (HTTP $HTTP_CODE)"
done
cd .. cd ..
done done
+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/
+63
View File
@@ -0,0 +1,63 @@
# 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
- **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.
- **Tradeoffs**: None meaningful — the fallback `${CARGO_TARGET_DIR:-target}` preserves local `makepkg` builds (no env var → still reads from `./target/`).
- **How**: Patched `install -Dm755` in all three Rust-app PKGBUILDs to use `"${CARGO_TARGET_DIR:-target}/release/<bin>"`.
## 2026-04-23 Single-threaded, low-priority build in CI to keep the Gitea host alive
- **Who**: Dominik, ClaudeCode
- **Why**: The act_runner container shares CPU/RAM/I/O with the Gitea host (network-host mode, no resource limits). Parallel Rust builds OOM-kill or thrash the host: run 86 (2026-04-23, moongreet-git 0.8.3.r1) stopped mid-compile at `Compiling gio v0.22.2` with no error, and gitea HTTPS was unreachable for ~11 min. Same pattern on 2026-04-20. Runner-side resource limits would be better, but require host-side config changes; a pipeline-side fix is portable and low-risk.
- **Tradeoffs**: Builds are slower — single-threaded cargo compile of a moon* project takes ~23× as long. `nice -n 19` + `ionice -c 3` further delay the build when the host is busy, but that's the point. Slow build beats downed host.
- **How**: `build-and-publish.yaml` exports `CARGO_BUILD_JOBS=1` and `MAKEFLAGS=-j1` before `makepkg`, and wraps `makepkg` with `nice -n 19 ionice -c 3`. Affects every package build in the matrix.
## 2026-04-21 moonarch-git becomes a full meta-package (hard deps on all Arch-repo essentials + own registry siblings)
- **Who**: Dominik, ClaudeCode
- **Why**: `moonarch-git` listed `moongreet-git`/`moonlock-git`/`moonset-git` only as `optdepends` and omitted most Arch-repo essentials (wlsunset, networkmanager, bluez, xwayland-satellite, file-manager stack, zsh plugins, CLI tools, …) entirely — they lived only in `packages/official.txt`. `paru -S moonarch-git` on a fresh system therefore produced a desktop with no greeter, no lockscreen, no power menu, no nightlight, no network manager, no portals — a non-functional Moonarch. Split source of truth between PKGBUILD deps and txt files caused continuous drift (e.g. walker-bin was missing from both).
- **Tradeoffs**: `moonarch-git` is now chunky — installing it pulls ~60 packages (vs ~20 before). Acceptable because this is exactly what every Moonarch system needs; a leaner package just shifted the install work to imperative scripts that silently failed. AUR packages cannot be hard `depends=` (pacman can't resolve AUR), so they stay in `packages/aur.txt` and post-install.sh pulls them explicitly. `optdepends=` was slashed to real extras (docker, rustup for dev, waterfox) — no more mirroring of aur.txt there.
- **How**: Added to `depends=`: moongreet-git, moonlock-git, moonset-git, xwayland-satellite, libnotify, foot-terminfo, wlsunset, nwg-look, awww, libpulse, gst-plugin-pipewire, networkmanager + nm-applet + nm-openvpn + openvpn, bluez, gvfs + gvfs-{dnssd,mtp,smb}, udisks2, ntfs-3g, xdg-desktop-portal-{gnome,gtk}, qt6-5compat, zsh-{autosuggestions,syntax-highlighting}, bat, btop, eza, fastfetch, fd, fzf, lazygit, ripgrep, neovim, git, fwupd, ufw. Removed from `optdepends=`: all Moonarch ecosystem packages (now hard deps), all AUR packages (post-install.sh pulls from aur.txt), and already-depended Arch-repo packages. `pkgrel` bumped 9 → 10.
## 2026-04-20 Registry is the only install path; drop paru --pkgbuilds
- **Who**: Dominik, ClaudeCode
- **Why**: Two parallel mechanisms for finding moonarch packages (the Arch registry via `[moonarch]` in `pacman.conf`, and paru's PKGBUILD-repo via `[moonarch-pkgbuilds]` in `paru.conf`) created ambiguous state: `paru -S` resolves from whichever has a matching version first, and diagnostics have to account for both. With the registry DB now stable (see zombie fix below), the PKGBUILD-repo path is redundant.
- **Tradeoffs**: No more local-build fallback when the registry is broken — but when the registry is broken, the real fix is to repair it, not to mask the problem with a second mechanism. Existing systems need their `/etc/paru.conf` cleaned once (hook handles that on next moonarch-git upgrade).
- **How**: `moonarch.install` post_install now deletes `Mode = arp` and the `[moonarch-pkgbuilds]` section from `/etc/paru.conf` instead of writing them. `moonarch/scripts/post-install.sh` and `transform.sh` no longer configure paru.conf or call `paru -Syu --pkgbuilds`; they run `pacman -Sy` + `paru -S moonarch-git` (registry only).
## 2026-04-20 CI wipes all package versions before upload to kill DB zombies
- **Who**: Dominik, ClaudeCode
- **Why**: `paru -Syu` stopped offering `moonarch-git` updates after the r99 → r105 pkgver bump. Root cause: Gitea's Arch registry updates `moonarch.db` incrementally on upload, but does not evict old entries when a pkgver changes. `r99` lingered in the DB as a zombie — file already 404, but desc/sig still present — so clients saw `r99` as "latest" and never got `r105`. Not a one-off: every future pkgver bump would repeat the issue.
- **Tradeoffs**: Delete-before-upload adds an HTTP round-trip per package and requires `read:package` on the registry token (`write:package` was already there for upload). Alternative was an admin-side DB scrub per zombie — unscalable and hostile to the user.
- **How**: `build-and-publish.yaml` now lists every existing version of each built package via `GET /api/v1/packages/{owner}?type=arch&q={name}` and `DELETE`s them before the upload loop. jq installed on the runner as a dependency of the listing parser. The per-upload `DELETE` of the exact new version was removed (redundant).
## 2026-04-20 Register moongreet/moonset/sweet-cursors in the Arch registry
- **Who**: Dominik, ClaudeCode
- **Why**: These three packages were missing entirely from the registry — their last pkgver-bumps landed before the `build-and-publish` CI fixes (makedepends install, source-based PKGBUILD parse, multi-artifact upload). Without a new PKGBUILD change, the workflow never re-triggered, so they stayed absent.
- **Tradeoffs**: Bumping `pkgrel` manually is a one-shot push. Alternative (wait for the next real upstream change) would have left packages uninstallable indefinitely.
- **How**: Bumped `pkgrel` in each PKGBUILD, single commit, triggered the `build-and-publish` workflow.
+36 -17
View File
@@ -1,6 +1,7 @@
# Moonarch PKGBUILDs # Moonarch PKGBUILDs
Arch Linux package builds for the Moonarch ecosystem. Use with [paru](https://github.com/Morganamilo/paru) as a custom AUR source. PKGBUILDs for the Moonarch ecosystem. Published as prebuilt Arch packages
via the Gitea Package Registry at `gitea.moonarch.de`.
## Packages ## Packages
@@ -14,20 +15,16 @@ Arch Linux package builds for the Moonarch ecosystem. Use with [paru](https://gi
## Setup ## Setup
Add to `~/.config/paru/paru.conf`: The Moonarch installer configures `/etc/pacman.conf` with:
```ini ```ini
[moonarch] [moonarch]
Url = https://gitea.moonarch.de/nevaforget/moonarch-pkgbuilds SigLevel = Required DatabaseOptional
Server = https://gitea.moonarch.de/api/packages/nevaforget/arch/$repo/$arch
``` ```
Then sync the repository index: No extra paru setup required — `pacman` and `paru` both resolve moonarch
packages from the registry.
```bash
paru -Sy --pkgbuilds
```
This downloads the PKGBUILDs from Gitea. Without this step, paru will not find the moonarch packages.
## Install ## Install
@@ -37,19 +34,41 @@ paru -S moonarch-git # pulls in all ecosystem packages as dependencies
## Update ## Update
Standard system upgrade picks up new versions automatically:
```bash ```bash
paru -Syu paru -Syu
``` ```
Version bumps land in the registry automatically:
1. Push on `main` of `moonarch`, `moongreet`, `moonlock`, or `moonset`
triggers the per-project `update-pkgver.yaml` — pkgver-bot commits a
fresh `pkgver` to the matching PKGBUILD here.
2. That commit triggers `build-and-publish.yaml` (this repo): the runner
builds every changed PKGBUILD and uploads the artifacts to the Arch
registry. Before each upload all existing versions of the package are
deleted so the repo DB stays clean — see `build-and-publish.yaml` for
the rationale (zombie DB entries after pkgver changes).
`sweet-cursors-git` has no upstream CI; bump its `pkgrel` manually when
a rebuild is needed.
## Troubleshooting ## Troubleshooting
**"not downloaded (use -Sy --pkgbuilds to download)"**: Run `paru -Sy --pkgbuilds` to fetch the repo index. **`paru -Syu` shows no update even though a new version was published**:
check the repo DB has the new version.
**"cannot update the lock file ... --locked was passed"**: The PKGBUILD cache is stale. Clear it and retry:
```bash ```bash
rm -rf ~/.cache/paru/clone/repo/moonarch curl -s https://gitea.moonarch.de/api/packages/nevaforget/arch/moonarch/x86_64/moonarch.db \
paru -Sy --pkgbuilds && paru -S <package> | tar -tz | grep <pkgname>
```
If only an old version appears there, the `build-and-publish` workflow
did not run cleanly — inspect the latest run under
`gitea.moonarch.de/nevaforget/moonarch-pkgbuilds/actions`.
**File conflict on install** (`foo/bar exists in filesystem`): the file
was placed manually before the package claimed ownership. Once:
```bash
paru -Syu --overwrite=/path/to/conflicting/file
``` ```
+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
+98 -55
View File
@@ -4,8 +4,8 @@
# Maintainer: Dominik Kressler # Maintainer: Dominik Kressler
pkgname=moonarch-git pkgname=moonarch-git
pkgver=r81.579a948 pkgver=r129.d101b23
pkgrel=1 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"
@@ -13,16 +13,25 @@ license=('MIT')
install=moonarch.install install=moonarch.install
depends=( depends=(
# Moonarch ecosystem (own registry)
'moongreet'
'moonlock'
'moonset'
'sweet-cursors'
# Compositor & session # Compositor & session
'niri' 'niri'
'xwayland-satellite'
'greetd' 'greetd'
# Bar & notifications # Bar & notifications
'waybar' 'waybar'
'swaync' 'swaync'
'libnotify'
# Terminal # Terminal
'foot' 'foot'
'foot-terminfo'
# Clipboard # Clipboard
'cliphist' 'cliphist'
@@ -30,70 +39,80 @@ depends=(
# Display # Display
'kanshi' 'kanshi'
'wlsunset'
'nwg-look'
'brightnessctl'
# Wallpaper
'awww'
# Audio # Audio
'pipewire' 'pipewire'
'wireplumber' 'pipewire-alsa'
'pipewire-jack'
'pipewire-pulse' 'pipewire-pulse'
'wireplumber'
'libpulse'
'alsa-utils' 'alsa-utils'
'pavucontrol' 'pavucontrol'
'gst-plugin-pipewire'
# Theming # Network
'ttf-ubuntusans-nerd' 'networkmanager'
'network-manager-applet'
'networkmanager-openvpn'
'openvpn'
# System utilities referenced by helper scripts # Bluetooth
'brightnessctl' 'bluez'
'libnotify'
'upower'
'polkit-gnome'
'bluez-utils' 'bluez-utils'
# File manager & portals
'gvfs'
'gvfs-dnssd'
'gvfs-mtp'
'gvfs-smb'
'udisks2'
'ntfs-3g'
'xdg-desktop-portal-gnome'
'xdg-desktop-portal-gtk'
'qt6-5compat'
# Theming & fonts
'ttf-ubuntusans-nerd'
# Shell # Shell
'zsh' 'zsh'
'zsh-autosuggestions'
'zsh-syntax-highlighting'
# PipeWire extras for XDG config # CLI tools (referenced by zshrc + helper scripts)
'pipewire-alsa' 'bat'
'pipewire-jack' 'btop'
'gst-plugin-pipewire' 'eza'
'fastfetch'
'fd'
'fzf'
'jq'
'lazygit'
'ripgrep'
# Editor & VCS
'neovim'
'git'
# System
'fwupd'
'ufw'
'polkit-gnome'
'upower'
) )
optdepends=( optdepends=(
# Moonarch ecosystem (install via paru from AUR/local builds)
'moongreet-git: greetd greeter'
'moonlock-git: Wayland lockscreen'
'moonset-git: session power menu'
# AUR packages (install via paru)
'walker-bin: application launcher'
'elephant-bin: walker search daemon'
'awww: wallpaper daemon (swww alternative)'
'waypaper: wallpaper GUI'
'stasis: idle manager'
'colloid-catppuccin-gtk-theme-git: Catppuccin GTK theme'
'sweet-cursors-git: cursor theme'
# General tools
'docker: container runtime' 'docker: container runtime'
'docker-compose: multi-container orchestration' 'docker-compose: multi-container orchestration'
'neovim: editor (EDITOR in zshrc)' 'rustup: Rust toolchain manager (development)'
'rustup: Rust toolchain'
'git: version control'
'lazygit: terminal UI for git'
'btop: system monitor'
'fastfetch: system info display'
'auto-cpufreq: CPU frequency scaling'
'ufw: firewall'
'timeshift: system snapshots'
'fwupd: firmware updates'
'waterfox-bin: web browser' 'waterfox-bin: web browser'
'blueberry: bluetooth manager GUI'
'nwg-look: GTK settings editor'
'wdisplays-persistent-gettext: display configuration GUI'
'wl-color-picker: color picker'
'waybar-niri-windows-bin: niri window titles for waybar'
'waybar-niri-workspaces-enhanced-git: niri workspaces for waybar'
'xwayland-satellite: X11 app support'
'colloid-catppuccin-theme-git: full Catppuccin GTK+icon theme'
) )
makedepends=('git') makedepends=('git')
@@ -140,8 +159,13 @@ package() {
# --- Helper scripts -> /usr/bin/ --- # --- Helper scripts -> /usr/bin/ ---
install -Dm755 defaults/bin/moonarch-* -t "$pkgdir/usr/bin/" install -Dm755 defaults/bin/moonarch-* -t "$pkgdir/usr/bin/"
# moonarch-update # moonarch-update + shorthand alias
install -Dm755 scripts/moonarch-update "$pkgdir/usr/bin/moonarch-update" install -Dm755 scripts/moonarch-update "$pkgdir/usr/bin/moonarch-update"
ln -s moonarch-update "$pkgdir/usr/bin/moonup"
# moonarch-doctor + shorthand alias
install -Dm755 scripts/moonarch-doctor "$pkgdir/usr/bin/moonarch-doctor"
ln -s moonarch-doctor "$pkgdir/usr/bin/moondoc"
# awww compatibility symlinks (waypaper calls swww) # awww compatibility symlinks (waypaper calls swww)
ln -sf /usr/bin/awww "$pkgdir/usr/bin/swww" ln -sf /usr/bin/awww "$pkgdir/usr/bin/swww"
@@ -172,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"
@@ -183,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"
+20 -8
View File
@@ -42,16 +42,13 @@ post_install() {
fi fi
done < /etc/passwd done < /etc/passwd
# Ensure paru PKGBUILD repo is configured (breaks bootstrap loop otherwise) # Clean up legacy paru PKGBUILD-repo config. Moonarch now ships binaries
# exclusively through the Arch registry (pacman repo in /etc/pacman.conf);
# the [moonarch-pkgbuilds] section and Mode = arp are obsolete.
PARU_CONF="/etc/paru.conf" PARU_CONF="/etc/paru.conf"
if [ -f "$PARU_CONF" ]; then if [ -f "$PARU_CONF" ]; then
if ! grep -q 'Mode.*p' "$PARU_CONF" 2>/dev/null; then sed -i '/^Mode[[:space:]]*=[[:space:]]*arp\s*$/d' "$PARU_CONF"
sed -i '/^\[options\]/a Mode = arp' "$PARU_CONF" sed -i '/^\[moonarch-pkgbuilds\]$/,/^$/d' "$PARU_CONF"
fi
if ! grep -q '\[moonarch-pkgbuilds\]' "$PARU_CONF" 2>/dev/null; then
printf '\n[moonarch-pkgbuilds]\nUrl = https://gitea.moonarch.de/nevaforget/moonarch-pkgbuilds.git\n' \
>> "$PARU_CONF"
fi
fi fi
# Cleanup legacy user-level configs (moved to system-level) # Cleanup legacy user-level configs (moved to system-level)
@@ -88,6 +85,21 @@ pre_upgrade() {
if [ -d /etc/xdg/walker/themes/moonarch ] && ! pacman -Qo /etc/xdg/walker/themes/moonarch/style.css &>/dev/null; then if [ -d /etc/xdg/walker/themes/moonarch ] && ! pacman -Qo /etc/xdg/walker/themes/moonarch/style.css &>/dev/null; then
rm -rf /etc/xdg/walker/themes/moonarch rm -rf /etc/xdg/walker/themes/moonarch
fi fi
# Migrate cliphist.service → cliphist-text + cliphist-image
if [ -f /etc/systemd/user/cliphist.service ]; then
while IFS=: read -r _ _ uid _ _ home _; do
if [ "$uid" -ge 1000 ] && [ "$uid" -lt 60000 ] && [ -d "$home" ]; then
rm -f "$home/.config/systemd/user/graphical-session.target.wants/cliphist.service" 2>/dev/null || true
fi
done < /etc/passwd
rm -f /etc/systemd/user/graphical-session.target.wants/cliphist.service 2>/dev/null || true
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() {
+10 -6
View File
@@ -1,19 +1,23 @@
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.7.4.r1.gf7e258d 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
license = MIT license = MIT
makedepends = git makedepends = git
makedepends = cargo makedepends = cargo
makedepends = gtk4
makedepends = gtk4-layer-shell
makedepends = pkgconf
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
+15 -12
View File
@@ -1,10 +1,11 @@
# 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.7.4.r1.gf7e258d epoch=1
pkgver=0.10.1
pkgrel=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')
@@ -18,18 +19,16 @@ depends=(
makedepends=( makedepends=(
'git' 'git'
'cargo' 'cargo'
'gtk4'
'gtk4-layer-shell'
'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
@@ -37,11 +36,15 @@ build() {
package() { package() {
cd "$srcdir/greetd-moongreet" cd "$srcdir/greetd-moongreet"
install -Dm755 target/release/moongreet "$pkgdir/usr/bin/moongreet" install -Dm755 "${CARGO_TARGET_DIR:-target}/release/moongreet" "$pkgdir/usr/bin/moongreet"
# Greeter config # Greeter config
install -Dm644 config/moongreet.toml "$pkgdir/etc/moongreet/moongreet.toml" install -Dm644 config/moongreet.toml "$pkgdir/etc/moongreet/moongreet.toml"
# Polkit rule — allow the greeter user to reboot/power off
install -Dm644 config/polkit/50-moongreet-power.rules \
"$pkgdir/usr/share/polkit-1/rules.d/50-moongreet-power.rules"
# Cache directories # Cache directories
install -dm700 "$pkgdir/var/cache/moongreet" install -dm700 "$pkgdir/var/cache/moongreet"
install -dm700 "$pkgdir/var/cache/moongreet/last-session" install -dm700 "$pkgdir/var/cache/moongreet/last-session"
+12 -7
View File
@@ -1,21 +1,26 @@
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.7.r4.gb89435b pkgver = 0.6.19
pkgrel = 1 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
makedepends = git makedepends = git
makedepends = cargo makedepends = cargo
makedepends = gtk4
makedepends = gtk4-layer-shell
makedepends = gtk-session-lock
makedepends = pam
makedepends = pkgconf
depends = gtk4 depends = gtk4
depends = gtk4-layer-shell depends = gtk4-layer-shell
depends = gtk-session-lock depends = gtk-session-lock
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
+13 -13
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.7.r4.gb89435b pkgver=0.6.19
pkgrel=1 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"
@@ -20,20 +20,20 @@ depends=(
makedepends=( makedepends=(
'git' 'git'
'cargo' 'cargo'
'gtk4'
'gtk4-layer-shell'
'gtk-session-lock'
'pam'
'pkgconf'
) )
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
@@ -41,7 +41,7 @@ build() {
package() { package() {
cd "$srcdir/moonlock" cd "$srcdir/moonlock"
install -Dm755 target/release/moonlock "$pkgdir/usr/bin/moonlock" install -Dm755 "${CARGO_TARGET_DIR:-target}/release/moonlock" "$pkgdir/usr/bin/moonlock"
# PAM configuration # PAM configuration
install -Dm644 config/moonlock-pam "$pkgdir/etc/pam.d/moonlock" install -Dm644 config/moonlock-pam "$pkgdir/etc/pam.d/moonlock"
+9 -6
View File
@@ -1,17 +1,20 @@
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 = 1 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
makedepends = git makedepends = git
makedepends = cargo makedepends = cargo
makedepends = gtk4
makedepends = gtk4-layer-shell
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
+10 -12
View File
@@ -1,10 +1,10 @@
# 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=1 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')
@@ -17,17 +17,15 @@ depends=(
makedepends=( makedepends=(
'git' 'git'
'cargo' 'cargo'
'gtk4'
'gtk4-layer-shell'
'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
@@ -35,7 +33,7 @@ build() {
package() { package() {
cd "$srcdir/moonset" cd "$srcdir/moonset"
install -Dm755 target/release/moonset "$pkgdir/usr/bin/moonset" install -Dm755 "${CARGO_TARGET_DIR:-target}/release/moonset" "$pkgdir/usr/bin/moonset"
# Example config # Example config
install -Dm644 config/moonset.toml "$pkgdir/etc/moonset/moonset.toml.example" install -Dm644 config/moonset.toml "$pkgdir/etc/moonset/moonset.toml.example"
+16
View File
@@ -0,0 +1,16 @@
pkgbase = sshfsc
pkgdesc = Quickly mount remote systems via SSHFS based on your ssh_config
pkgver = 0.2.0
pkgrel = 1
url = https://gitea.moonarch.de/nevaforget/sshfs_connect
arch = x86_64
license = MIT
makedepends = git
makedepends = go
depends = sshfs
conflicts = sshfsc-git
replaces = sshfsc-git
source = git+https://gitea.moonarch.de/nevaforget/sshfs_connect.git#tag=v0.2.0
sha256sums = SKIP
pkgname = sshfsc
+40
View File
@@ -0,0 +1,40 @@
# ABOUTME: PKGBUILD for sshfsc — quick SSHFS mounter driven by ssh_config.
# ABOUTME: Builds from a versioned git tag.
# Maintainer: Dominik Kressler
pkgname=sshfsc
pkgver=0.2.0
pkgrel=1
pkgdesc="Quickly mount remote systems via SSHFS based on your ssh_config"
arch=('x86_64')
url="https://gitea.moonarch.de/nevaforget/sshfs_connect"
license=('MIT')
depends=(
'sshfs'
)
makedepends=(
'git'
'go'
)
replaces=('sshfsc-git')
conflicts=('sshfsc-git')
source=("git+${url}.git#tag=v$pkgver")
sha256sums=('SKIP')
build() {
cd "$srcdir/sshfs_connect"
export CGO_CPPFLAGS="${CPPFLAGS}"
export CGO_CFLAGS="${CFLAGS}"
export CGO_CXXFLAGS="${CXXFLAGS}"
export CGO_LDFLAGS="${LDFLAGS}"
export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw"
go build -o sshfsc .
}
package() {
cd "$srcdir/sshfs_connect"
install -Dm755 sshfsc "$pkgdir/usr/bin/sshfsc"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
}
+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=1 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"