PKGBUILDS
Automated AUR packages, kept up to date by Gitea Actions on git.felo.gg.
Every 6 hours the update workflow checks each package's upstream for a new release. When one is found it:
- updates the
PKGBUILD(pkgver/pkgrel/sha256sums), - test-builds it with
makepkgand regenerates.SRCINFO, - commits the changes back to this repository, and
- pushes the package files to the AUR.
If a package fails to update, the notify workflow opens an issue for it. The issue closes once that package updates again.
Ground rule
This repository never hosts a binary. Every PKGBUILD sources what
upstream published — a release tarball, .deb, wheel or AppImage — and
either repackages it (-bin) or builds it (no suffix), exactly like any
hand-written AUR package would. CI only bumps pkgver and the checksums.
This is not a style preference. The AUR submission guidelines say:
Packages that use prebuilt deliverables, when the sources are available, must use the
-binsuffix. […] The AUR should not contain the binary tarball created by makepkg
A -bin package repackages what upstream ships. Building the software
yourself, publishing the result as a release asset and having the AUR
PKGBUILD download that makes this repository an unofficial binary
repository — users can no longer verify that the package matches what
upstream released. Packages set up that way were removed from the AUR in
July 2026; do not reintroduce the pattern.
If upstream ships no Linux binary, there are exactly two options: build from
source in the PKGBUILD (and drop the -bin suffix), or don't package it.
Packages
| Package | Upstream | Upstream deliverable | AUR |
|---|---|---|---|
bottles-opener |
LoonixTools/bottles-opener — double-click a file and it opens in its Windows program inside Bottles, with the file types and icons from the bottle's registry | built from source | bottles-opener |
bt-volume-step |
LoonixTools/bt-volume-step — corrects the coarse internal volume grid of Bluetooth audio devices on PipeWire | built from source | bt-volume-step |
cachy-auto-update |
LoonixTools/cachy-auto-update — unattended background updates for CachyOS (pacman, AUR, Flatpak, AppImages) | built from source | cachy-auto-update |
capture-studio-bin |
tenzen.studio: Capture Studio by Tenzen Studio, screen recorder and editor for product demos (proprietary Electron app). Called tenzen-studio-bin before |
Flatpak bundle | capture-studio-bin |
chiaki-ng-bin |
streetpea/chiaki-ng — PlayStation Remote Play client (Qt6) | AppImage | chiaki-ng-bin |
chromium-widevine-helper |
GloriousEggroll/chromium-widevine-helper — extension + native helper installing Google's Widevine CDM into Chromium-based browser profiles | no build step | chromium-widevine-helper |
concat |
jub0t/Concat — free and open-source CapCut replacement (a Slint window over a Rust video engine) | built from source | concat |
concat-bin |
jub0t/Concat — prebuilt release of concat |
.deb |
concat-bin |
concat-git |
jub0t/Concat — main branch of concat |
built from source | concat-git |
face-unlock |
LoonixTools/face-unlock: Face ID for Linux, for the lock screen, sudo and admin prompts on Plasma, GNOME, Hyprland and Niri, with a photo check (C++/Qt6, OpenCV). Called plasma-face-unlock before 2.0.0 |
built from source | face-unlock |
face-unlock-bin |
LoonixTools/face-unlock: prebuilt release of face-unlock, with OpenCV linked in |
tarball (built on Arch) | face-unlock-bin |
faugus-launcher-bin |
Faugus/faugus-launcher — launcher for Windows games via UMU-Launcher | .deb (all) |
faugus-launcher-bin |
fluxer-bin |
fluxer.app — Fluxer desktop client (Electron) | tarball | fluxer-bin |
kitty-tune-bin |
alan7383/KittyTuneDesktop — SoundCloud and YouTube music player (Kotlin/Compose Multiplatform) | .deb |
kitty-tune-bin |
lunar-client-bin |
lunarclient.com — Minecraft PvP modpack launcher | AppImage | lunar-client-bin |
middleclick-autoscroll |
LoonixTools/middleclick-autoscroll — enables middle-click autoscroll in every application that supports it | built from source | middleclick-autoscroll |
modrinth-app-bin |
modrinth/code — Minecraft mod manager/launcher | .deb |
modrinth-app-bin |
modrinth-enhanced |
Felitendo/Modrinth-Enhanced — Modrinth App without ads or telemetry, with offline and Ely.by accounts (a patch series on top of each Modrinth App release) | built from source | modrinth-enhanced |
modrinth-enhanced-bin |
Felitendo/Modrinth-Enhanced — prebuilt release of modrinth-enhanced |
.deb |
modrinth-enhanced-bin |
moondeckbuddy |
FrogTheFrog/moondeck-buddy — host companion of the MoonDeck Steam Deck plugin (C++/Qt6) | built from source | moondeckbuddy |
moondeckbuddy-bin |
FrogTheFrog/moondeck-buddy — prebuilt release of moondeckbuddy |
AppImage | not published yet |
moonlight-vrr |
Nonary/moonlight-qt: fork of the Moonlight game streaming client with smooth VRR pacing and the PyroWave codec (C++/Qt6) | built from source | moonlight-vrr |
moonlight-vrr-bin |
Nonary/moonlight-qt: prebuilt release of moonlight-vrr, built by upstream without Wayland support (runs through XWayland) |
AppImage | moonlight-vrr-bin |
nextcloud-native |
Obiente/native — adaptive native Nextcloud client for files, media and installed server apps (Compose Multiplatform, unofficial) | built from source | nextcloud-native |
nextcloud-native-bin |
Obiente/native — prebuilt release of nextcloud-native |
.deb |
nextcloud-native-bin |
nextcloud-native-git |
Obiente/native — main branch of nextcloud-native |
built from source | nextcloud-native-git |
plezy-bin |
edde746/plezy — Plex, Jellyfin and Emby client (Flutter); the source package lives in extra |
.deb |
plezy-bin |
schist |
Infrawrench/schist: layered image editor with PSD and Affinity support (Rust/gpui, alpha) | built from source | schist |
schist-bin |
Infrawrench/schist: prebuilt release of schist |
.pkg.tar.zst |
schist-bin |
sharpemu-bin |
sharpemu/sharpemu — experimental PlayStation 5 emulator | tarball | sharpemu-bin |
snapx-bin |
SnapXL/SnapX — ShareX-fork screenshot/sharing tool | self-contained tarball | snapx-bin |
untix |
ostfriese4/untix: "Timetable", a GTK4 + LibAdwaita client for WebUntis. Called untis and timetable on the AUR before |
built from source | untix |
untix-git |
ostfriese4/untix: main branch of untix |
built from source | untix-git |
vacuumtube-bin |
shy1132/VacuumTube — YouTube Leanback (TV UI) with built-in adblocker | .deb |
vacuumtube-bin |
waydroid-helper-bin |
waydroid-helper/waydroid-helper — GTK4 GUI for Waydroid configuration and extensions | AppImage | waydroid-helper-bin |
wiiudownloader-bin |
Xpl0itU/WiiUDownloader — Wii U title downloader (Go + GTK4) | AppImage | wiiudownloader-bin |
zapzap-bin |
rafatosta/zapzap — WhatsApp desktop client (PyQt6 + WebEngine) | wheel | zapzap-bin |
Setup (one-time)
- Create an AUR account and add an SSH public key to it (AUR account settings).
- Add the matching private key as a repository secret named
AUR_SSH_PRIVATE_KEY(Settings → Actions → Secrets → Add secret), base64-encoded on one line (base64 -w0 < key). The Gitea runner prints each step's environment and does not mask a multi-line secret, so a plain key would end up in the log. - Optionally set the repository variable
AUR_GIT_NAMEand the repository secretAUR_GIT_EMAILto control the commit identity used on the AUR (defaults:Felitendo/ the maintainer's old GitHub noreply address). - Optionally add a GitHub token (no scopes needed) as the secret
GITHUB_API_TOKEN. Packages ask the GitHub API about upstream releases; without a token those calls are anonymous and share 60 per hour.
The runner needs the ubuntu-latest label and Docker: every package is built
in an archlinux:base-devel container.
The first push to ssh://aur@aur.archlinux.org/<pkgname>.git creates the AUR
package automatically.
Adding a package
Check first that upstream actually publishes a Linux binary, that the package
is not already in the official repositories (the AUR rejects the push
outright: "package already provided by [extra]"), and that the AUR does not
already carry an equivalent package — a -bin next to a maintained
source package is fine, a second copy of the same thing is not.
Then create a directory named after the AUR package containing:
-
PKGBUILD— sources upstream's release URLs directly.pkgver,pkgrelandsha256sumsare maintained by CI, so keepsha256sumson a single line. -
pkg.sh— bash sourced by scripts/update-package.sh, defining:latest_version— prints the latest upstream version, novprefix. A channel that has stopped pointing at a release can return75(EX_TEMPFAIL) instead: the run then warns, keeps the version thePKGBUILDhas and carries on, so packaging changes still reach the AUR (fluxer-bin).refresh_checksums <version> <pkgbuild-path>— updates thesha256sums*lines for that version. If the asset name carries build metadata that does not follow frompkgver(seesnapx-bin,faugus-launcher-bin), resolve it via the GitHub API here and sync an_assetvariable in thePKGBUILDtoo.BUILD_DEPS— optional array of Arch packages to install before the CI test build; only needed by packages that build from source or need a tool to unpack upstream's deliverable (capture-studio-bin:ostree).AUR_PUBLISH— optional; set tofalseto keep a package out of the AUR while it is still being prepared. Everything else still runs, so thePKGBUILDis kept current and test-built; only the publishing waits. Flip it totrueto go live (moondeckbuddy-bin).face-unlock-binsets it itself: it goes live with the first release that has its tarball.
Other local source files in the directory (
.desktopfiles, patches, …) are pushed to the AUR alongsidePKGBUILDand.SRCINFO.
The workflow discovers package directories automatically. Trigger a run
manually via Actions → Update AUR packages → Run workflow to publish it
immediately. To update only some packages, enter their directory names,
separated by commas (e.g. concat, plezy-bin); leave the field empty to update
all of them.