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.
Moonarch PKGBUILDs
PKGBUILDs for the Moonarch ecosystem. Published as prebuilt Arch packages
via the Gitea Package Registry at gitea.moonarch.de.
Packages
| Package | Description |
|---|---|
moonarch-git |
Desktop environment defaults (Niri, Waybar, Catppuccin Mocha) |
moonset-git |
Wayland session power menu |
moonlock-git |
Wayland lockscreen with PAM and fingerprint support |
moongreet-git |
greetd greeter for Wayland |
sweet-cursors-git |
Sweet cursor theme |
Setup
The Moonarch installer configures /etc/pacman.conf with:
[moonarch]
SigLevel = Required DatabaseOptional
Server = https://gitea.moonarch.de/api/packages/nevaforget/arch/$repo/$arch
No extra paru setup required — pacman and paru both resolve moonarch
packages from the registry.
Install
paru -S moonarch-git # pulls in all ecosystem packages as dependencies
Update
paru -Syu
Version bumps land in the registry automatically:
- Push on
mainofmoonarch,moongreet,moonlock, ormoonsettriggers the per-projectupdate-pkgver.yaml— pkgver-bot commits a freshpkgverto the matching PKGBUILD here. - 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 — seebuild-and-publish.yamlfor 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
paru -Syu shows no update even though a new version was published:
check the repo DB has the new version.
curl -s https://gitea.moonarch.de/api/packages/nevaforget/arch/moonarch/x86_64/moonarch.db \
| 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:
paru -Syu --overwrite=/path/to/conflicting/file