Compare commits

...
Author SHA1 Message Date
Felitendo 9ea2ee09ce gearlever-bin: make dwarfs a hard dependency 2026-07-26 15:32:35 +02:00
Felitendo ac99db7346 linux-wallpaperengine-bin: remove package 2026-07-25 16:09:12 +02:00
Felitendo 0e22ae0877 bottles-bin: remove package 2026-07-25 15:48:44 +02:00
github-actions[bot] 4b6f203306 wiiudownloader-bin: update to 2.99-1 [skip ci] 2026-07-24 19:23:55 +00:00
github-actions[bot] a221d47de4 modrinth-app-bin: update to 0.16.1-1 [skip ci] 2026-07-24 19:12:29 +00:00
github-actions[bot] f3cee39f53 protonplus-bin: update to 0.5.22-1 [skip ci] 2026-07-24 13:14:35 +00:00
Felitendo b17ec7b0b0 lunar-client-bin: add package (3.7.12-1)
Upstream moved to an "ow" electron-updater channel with a filename
suffix; latest_version checks both channels (vercmp picks the winner) and
refresh_checksums keeps the _appimage filename in sync. Also clean up
downloaded .AppImage files like the other source leftovers.
2026-07-24 11:33:08 +02:00
Felitendo 6f0f9488ec Include pkgrel in the local source filename
Artifact rebuilds (e.g. dependency bundling) change the file behind
<pkg>-<ver>.tar.zst while keeping its name, so users with the previous
file in their AUR helper cache hit a checksum mismatch. Naming the local
download <pkg>-<ver>-<rel>.tar.zst makes every rebuild a fresh file.
2026-07-24 11:18:52 +02:00
github-actions[bot] 83194de7b4 bottles-bin: update to 64.1-2 [skip ci] 2026-07-24 09:00:15 +00:00
Felitendo 8c0d79f9c0 gearlever-bin, bottles-bin: bundle AUR-only dependencies
gearlever-bin: ship ftputil + desktop-entry-lib inside /usr/share/gearlever
(pinned via upstream requirements.txt) instead of depending on the AUR
packages.

bottles-bin: build the fvs2 CLI (with its core library) from source and
bundle it under /usr/lib/bottles (Bottles patched to use that path), and
ship patool, pathvalidate and vkbasalt-cli in /usr/share/bottles. vkbasalt
becomes an optdepend. Installing either package now needs no AUR builds.
2026-07-24 10:52:43 +02:00
Felitendo 4c008fd3e4 waydroid-helper-bin: add package (0.2.9-1) 2026-07-24 10:39:29 +02:00
Felitendo 14deed65d7 gnome-network-displays-bin: add package (0.99.0-1) 2026-07-24 10:31:31 +02:00
github-actions[bot] 254a666c0d chiaki-ng-bin: update to 1.10.0-1 [skip ci] 2026-07-24 08:00:07 +00:00
Felitendo 83db919716 chiaki-ng-bin: apply Qt6GuiPrivate patch only when the tag lacks the fix 2026-07-24 09:56:46 +02:00
github-actions[bot] f42572b41a linux-wallpaperengine-bin: update to r627.b016d7d-1 [skip ci] 2026-07-24 07:32:57 +00:00
github-actions[bot] 1515c673ea bazaar-bin: update to 0.9.1-1 [skip ci] 2026-07-24 07:20:52 +00:00
Felitendo 66736f3fcb README: add the ten new packages to the table 2026-07-24 09:18:54 +02:00
Felitendo 4014aefcdd trayscale-bin: add package (0.18.9-1) 2026-07-24 09:18:54 +02:00
Felitendo 176c0b4e6e bazaar-bin, chiaki-ng-bin, linux-wallpaperengine-bin: add packages (built and published by CI) 2026-07-24 09:13:19 +02:00
Felitendo ca968f0e26 planify-bin: add package (4.19.5-1) 2026-07-24 09:13:19 +02:00
Felitendo 827762a6d4 librepods-bin: add package (1.0.0rc1-1) 2026-07-24 09:13:19 +02:00
Felitendo 41c6862577 snapx-bin: add package (0.4.0-1) 2026-07-24 09:13:19 +02:00
Felitendo b37fa50d17 modrinth-app-bin: add package (0.15.20-1) 2026-07-24 09:13:19 +02:00
Felitendo 9bdaa7d21e Clean up downloaded .deb files after checksum-mode updates 2026-07-24 09:13:19 +02:00
Felitendo d8e0993820 wiiudownloader-bin: add package (2.98-1) 2026-07-24 09:13:19 +02:00
Felitendo 051b93e662 vacuumtube-bin: add package (1.8.1-1) 2026-07-24 09:13:19 +02:00
github-actions[bot] 78ed7f1c67 bottles-bin: update to 64.1-1 [skip ci] 2026-07-24 06:27:25 +00:00
Felitendo 6210551a30 README: add bottles, faugus-launcher, protonplus and zapzap to the table 2026-07-24 08:26:27 +02:00
Felitendo 1cac0a49ba bottles-bin: add package (built and published by CI) 2026-07-24 08:26:27 +02:00
Felitendo 4daa234303 protonplus-bin: add package (0.5.21-1) 2026-07-24 08:26:27 +02:00
Felitendo f7ec4c0615 zapzap-bin: add package (7.0.3-1) 2026-07-24 08:26:27 +02:00
Felitendo 8098f4a62c faugus-launcher-bin: add package (2.0.2-1) 2026-07-24 08:26:27 +02:00
Felitendo ff38c61e10 README: add gearlever-bin to the package table 2026-07-24 02:10:35 +02:00
Felitendo ef3af9f483 gearlever-bin: add package (4.6.2-1) 2026-07-24 02:10:35 +02:00
Felitendo 89206f1cd5 README: add thonny-bin to the package table 2026-07-23 09:16:03 +02:00
Felitendo e509576181 thonny-bin: add package (5.0.0-1) 2026-07-23 09:03:28 +02:00
github-actions[bot] b14cd21d70 sharpemu-bin: update to 0.0.2_beta.5-1 [skip ci] 2026-07-23 01:08:19 +00:00
Felitendo 8b3302d335 sharpemu-bin: add package (0.0.2_beta.4-1) 2026-07-22 06:53:10 +02:00
Felitendo db74a6b65a Prune superseded GitHub releases after publishing 2026-07-21 13:36:03 +02:00
Felitendo 0d9fea0a51 Queue workflow runs instead of racing on AUR pushes 2026-07-21 13:32:03 +02:00
Felitendo f215a99c11 chromium-widevine-helper-bin: add package (1.0.8-1) 2026-07-21 13:22:18 +02:00
64 changed files with 2001 additions and 5 deletions

No files matched your search

+7
View File
@@ -12,6 +12,13 @@ on:
- '*/*' - '*/*'
- '.github/workflows/update.yml' - '.github/workflows/update.yml'
# Never run twice at once: concurrent runs race on pushing to this repository
# and to the AUR (e.g. a push-triggered run and a manual dispatch both creating
# a new AUR repo). Queue instead of cancelling so every trigger still lands.
concurrency:
group: aur-update
cancel-in-progress: false
permissions: permissions:
contents: write contents: write
+2
View File
@@ -4,3 +4,5 @@
*.pkg.tar.* *.pkg.tar.*
*/src/ */src/
*/pkg/ */pkg/
*.deb
*.AppImage
+22 -2
View File
@@ -11,8 +11,9 @@ package's upstream for a new release. When one is found it:
release of **this** repository (tag `<pkgname>-<version>`), release of **this** repository (tag `<pkgname>-<version>`),
3. updates the `PKGBUILD` (pkgver/pkgrel/sha256sums), test-builds it with 3. updates the `PKGBUILD` (pkgver/pkgrel/sha256sums), test-builds it with
`makepkg` and regenerates `.SRCINFO`, `makepkg` and regenerates `.SRCINFO`,
4. commits the changes back to this repository, and 4. commits the changes back to this repository,
5. pushes `PKGBUILD` + `.SRCINFO` to the AUR. 5. pushes `PKGBUILD` + `.SRCINFO` to the AUR, and
6. deletes the package's superseded releases (older versions, tag included).
The AUR packages themselves only download the prebuilt asset from step 2, so The AUR packages themselves only download the prebuilt asset from step 2, so
users don't need any build dependencies. users don't need any build dependencies.
@@ -23,6 +24,25 @@ users don't need any build dependencies.
|---|---|---| |---|---|---|
| `timetable-bin` | [ostfriese4/untis](https://codeberg.org/ostfriese4/untis) — "Timetable", a GTK4 + LibAdwaita client for WebUntis | [timetable-bin](https://aur.archlinux.org/packages/timetable-bin) | | `timetable-bin` | [ostfriese4/untis](https://codeberg.org/ostfriese4/untis) — "Timetable", a GTK4 + LibAdwaita client for WebUntis | [timetable-bin](https://aur.archlinux.org/packages/timetable-bin) |
| `fluxer-bin` | [fluxer.app](https://fluxer.app) — Fluxer desktop client (Electron) | [fluxer-bin](https://aur.archlinux.org/packages/fluxer-bin) | | `fluxer-bin` | [fluxer.app](https://fluxer.app) — Fluxer desktop client (Electron) | [fluxer-bin](https://aur.archlinux.org/packages/fluxer-bin) |
| `chromium-widevine-helper-bin` | [GloriousEggroll/chromium-widevine-helper](https://github.com/GloriousEggroll/chromium-widevine-helper) — extension + native helper installing Google's Widevine CDM into Chromium-based browser profiles | [chromium-widevine-helper-bin](https://aur.archlinux.org/packages/chromium-widevine-helper-bin) |
| `sharpemu-bin` | [sharpemu/sharpemu](https://github.com/sharpemu/sharpemu) — experimental PlayStation 5 emulator | [sharpemu-bin](https://aur.archlinux.org/packages/sharpemu-bin) |
| `thonny-bin` | [thonny/thonny](https://github.com/thonny/thonny) — Python IDE for beginners (bundles a standalone CPython + tcl/tk) | [thonny-bin](https://aur.archlinux.org/packages/thonny-bin) |
| `gearlever-bin` | [mijorus/gearlever](https://github.com/mijorus/gearlever) — "Gear Lever", a GTK4 + LibAdwaita AppImage manager | [gearlever-bin](https://aur.archlinux.org/packages/gearlever-bin) |
| `faugus-launcher-bin` | [Faugus/faugus-launcher](https://github.com/Faugus/faugus-launcher) — launcher for Windows games via UMU-Launcher | [faugus-launcher-bin](https://aur.archlinux.org/packages/faugus-launcher-bin) |
| `protonplus-bin` | [Vysp3r/ProtonPlus](https://github.com/Vysp3r/ProtonPlus) — compatibility-tools manager (Vala/GTK4) | [protonplus-bin](https://aur.archlinux.org/packages/protonplus-bin) |
| `zapzap-bin` | [rafatosta/zapzap](https://github.com/rafatosta/zapzap) — WhatsApp desktop client (PyQt6 + WebEngine) | [zapzap-bin](https://aur.archlinux.org/packages/zapzap-bin) |
| `vacuumtube-bin` | [shy1132/VacuumTube](https://github.com/shy1132/VacuumTube) — YouTube Leanback (TV UI) with built-in adblocker (repackaged upstream deb) | [vacuumtube-bin](https://aur.archlinux.org/packages/vacuumtube-bin) |
| `wiiudownloader-bin` | [Xpl0itU/WiiUDownloader](https://github.com/Xpl0itU/WiiUDownloader) — Wii U title downloader (Go + GTK3) | [wiiudownloader-bin](https://aur.archlinux.org/packages/wiiudownloader-bin) |
| `trayscale-bin` | [DeedleFake/trayscale](https://github.com/DeedleFake/trayscale) — GUI for the Tailscale CLI (Go + GTK4) | [trayscale-bin](https://aur.archlinux.org/packages/trayscale-bin) |
| `librepods-bin` | [librepods-org/librepods](https://github.com/librepods-org/librepods) — AirPods integration for Linux (Qt6) | [librepods-bin](https://aur.archlinux.org/packages/librepods-bin) |
| `planify-bin` | [alainm23/planify](https://github.com/alainm23/planify) — task manager with Todoist/Nextcloud support (Vala/GTK4, bundles gxml) | [planify-bin](https://aur.archlinux.org/packages/planify-bin) |
| `modrinth-app-bin` | [modrinth/code](https://github.com/modrinth/code) — Modrinth's Minecraft mod manager/launcher (repackaged upstream deb) | [modrinth-app-bin](https://aur.archlinux.org/packages/modrinth-app-bin) |
| `bazaar-bin` | [bazaar-org/bazaar](https://github.com/bazaar-org/bazaar) — GNOME app store for flatpaks/Flathub | [bazaar-bin](https://aur.archlinux.org/packages/bazaar-bin) |
| `snapx-bin` | [SnapXL/SnapX](https://github.com/SnapXL/SnapX) — ShareX-fork screenshot/sharing tool (repackaged upstream bundle) | [snapx-bin](https://aur.archlinux.org/packages/snapx-bin) |
| `chiaki-ng-bin` | [streetpea/chiaki-ng](https://github.com/streetpea/chiaki-ng) — PlayStation Remote Play client (Qt6) | [chiaki-ng-bin](https://aur.archlinux.org/packages/chiaki-ng-bin) |
| `gnome-network-displays-bin` | [GNOME/gnome-network-displays](https://gitlab.gnome.org/GNOME/gnome-network-displays) — GNOME screencasting (Miracast/Chromecast) | [gnome-network-displays-bin](https://aur.archlinux.org/packages/gnome-network-displays-bin) |
| `waydroid-helper-bin` | [ayasa520/waydroid-helper](https://github.com/ayasa520/waydroid-helper) — GTK4 GUI for Waydroid configuration and extensions | [waydroid-helper-bin](https://aur.archlinux.org/packages/waydroid-helper-bin) |
| `lunar-client-bin` | [lunarclient.com](https://lunarclient.com) — Minecraft PvP modpack launcher (upstream AppImage) | [lunar-client-bin](https://aur.archlinux.org/packages/lunar-client-bin) |
## Setup (one-time) ## Setup (one-time)
+39
View File
@@ -0,0 +1,39 @@
pkgbase = bazaar-bin
pkgdesc = App store for GNOME with a focus on flatpaks and Flathub (prebuilt)
pkgver = 0.9.1
pkgrel = 1
url = https://github.com/bazaar-org/bazaar
arch = x86_64
license = GPL-3.0-only
depends = appstream
depends = cairo
depends = dconf
depends = flatpak
depends = glib2
depends = glycin
depends = glycin-gtk4
depends = graphene
depends = gtk4
depends = gtksourceview5
depends = json-glib
depends = libadwaita
depends = libdex
depends = libheif
depends = libmalcontent
depends = libproxy
depends = libsecret
depends = libsoup3
depends = libxmlb
depends = libyaml
depends = md4c
depends = pango
depends = webkitgtk-6.0
depends = hicolor-icon-theme
optdepends = krunner-bazaar: krunner integration
optdepends = malcontent: parental controls
provides = bazaar
conflicts = bazaar
source = bazaar-bin-0.9.1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/bazaar-bin-0.9.1/bazaar-bin-0.9.1.tar.zst
sha256sums = 236a8b672a9a67de9a240450f527b119bb4cbdfa0533e49578589fe83638e3dc
pkgname = bazaar-bin
+25
View File
@@ -0,0 +1,25 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=bazaar-bin
pkgver=0.9.1
pkgrel=1
pkgdesc="App store for GNOME with a focus on flatpaks and Flathub (prebuilt)"
arch=('x86_64')
url="https://github.com/bazaar-org/bazaar"
license=('GPL-3.0-only')
depends=('appstream' 'cairo' 'dconf' 'flatpak' 'glib2' 'glycin' 'glycin-gtk4'
'graphene' 'gtk4' 'gtksourceview5' 'json-glib' 'libadwaita' 'libdex'
'libheif' 'libmalcontent' 'libproxy' 'libsecret' 'libsoup3' 'libxmlb'
'libyaml' 'md4c' 'pango' 'webkitgtk-6.0' 'hicolor-icon-theme')
optdepends=('krunner-bazaar: krunner integration'
'malcontent: parental controls')
provides=('bazaar')
conflicts=('bazaar')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('236a8b672a9a67de9a240450f527b119bb4cbdfa0533e49578589fe83638e3dc')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+43
View File
@@ -0,0 +1,43 @@
# bazaar-bin - prebuilt package of https://github.com/bazaar-org/bazaar
# (GNOME app store focused on flatpaks/Flathub, C + GTK4/blueprint).
#
# Upstream tags releases but ships no binaries, so build_artifact() builds
# from the release tarball.
UPSTREAM_REPO="bazaar-org/bazaar"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(meson ninja blueprint-compiler glib2-devel python-babel gettext
gobject-introspection appstream flatpak gtk4 libadwaita
gtksourceview5 libdex glycin glycin-gtk4 webkitgtk-6.0 json-glib
libxmlb libyaml md4c libmalcontent libsecret libsoup3 libproxy
libheif)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/bazaar-$ver"
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
"$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+40
View File
@@ -0,0 +1,40 @@
pkgbase = chiaki-ng-bin
pkgdesc = Free and Open Source PlayStation Remote Play client (prebuilt)
pkgver = 1.10.0
pkgrel = 1
url = https://streetpea.github.io/chiaki-ng/
arch = x86_64
license = LicenseRef-AGPL-3.0-only-OpenSSL
depends = curl
depends = ffmpeg
depends = fftw
depends = gcc-libs
depends = glibc
depends = hicolor-icon-theme
depends = hidapi
depends = json-c
depends = libidn2
depends = libplacebo
depends = libpsl
depends = libssh2
depends = miniupnpc
depends = openssl
depends = opus
depends = qt6-base
depends = qt6-declarative
depends = qt6-svg
depends = qt6-webengine
depends = sdl2
depends = speexdsp
depends = zlib
optdepends = intel-media-driver: vaapi backend for Intel GPUs [>= Broadwell]
optdepends = libva-intel-driver: vaapi backend for Intel GPUs [<= Haswell]
optdepends = libva-mesa-driver: vaapi backend for AMD GPUs
provides = chiaki-ng
provides = chiaki
conflicts = chiaki-ng
conflicts = chiaki
source = chiaki-ng-bin-1.10.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/chiaki-ng-bin-1.10.0/chiaki-ng-bin-1.10.0.tar.zst
sha256sums = 76c55be0342c651a65ffe5df5ed14930d43b844590cac9f4ea67d23e80557599
pkgname = chiaki-ng-bin
+26
View File
@@ -0,0 +1,26 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=chiaki-ng-bin
pkgver=1.10.0
pkgrel=1
pkgdesc="Free and Open Source PlayStation Remote Play client (prebuilt)"
arch=('x86_64')
url="https://streetpea.github.io/chiaki-ng/"
license=('LicenseRef-AGPL-3.0-only-OpenSSL')
depends=('curl' 'ffmpeg' 'fftw' 'gcc-libs' 'glibc' 'hicolor-icon-theme'
'hidapi' 'json-c' 'libidn2' 'libplacebo' 'libpsl' 'libssh2'
'miniupnpc' 'openssl' 'opus' 'qt6-base' 'qt6-declarative' 'qt6-svg'
'qt6-webengine' 'sdl2' 'speexdsp' 'zlib')
optdepends=('intel-media-driver: vaapi backend for Intel GPUs [>= Broadwell]'
'libva-intel-driver: vaapi backend for Intel GPUs [<= Haswell]'
'libva-mesa-driver: vaapi backend for AMD GPUs')
provides=('chiaki-ng' 'chiaki')
conflicts=('chiaki-ng' 'chiaki')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('76c55be0342c651a65ffe5df5ed14930d43b844590cac9f4ea67d23e80557599')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+18
View File
@@ -0,0 +1,18 @@
--- a/gui/CMakeLists.txt 2025-10-11 20:52:37.048868767 +0100
+++ b/gui/CMakeLists.txt 2025-10-11 20:52:42.506427662 +0100
@@ -7,7 +7,7 @@
enable_language(OBJCXX)
endif()
-find_package(Qt6 REQUIRED COMPONENTS Core Gui Concurrent Svg Qml Quick Widgets)
+find_package(Qt6 REQUIRED COMPONENTS Core Gui Concurrent Svg Qml Quick Widgets GuiPrivate)
find_package(Qt6 COMPONENTS WebEngineQuick)
find_package(Qt6 COMPONENTS DBus)
@@ -154,4 +154,4 @@
BUNDLE DESTINATION bin)
install(FILES chiaking.desktop DESTINATION share/applications)
install(FILES chiaking.png DESTINATION share/icons/hicolor/512x512/apps)
-install(FILES io.github.streetpea.Chiaki4deck.appdata.xml DESTINATION share/metainfo)
\ No newline at end of file
+install(FILES io.github.streetpea.Chiaki4deck.appdata.xml DESTINATION share/metainfo)
+60
View File
@@ -0,0 +1,60 @@
# chiaki-ng-bin - prebuilt package of https://github.com/streetpea/chiaki-ng
# (free PlayStation Remote Play client, C/C++ + Qt6).
#
# Upstream ships no plain Linux binaries (only AppImage/flatpak), so
# build_artifact() builds from a git checkout of the release tag (the source
# tarballs lack the required submodules). Mirrors the AUR source package:
# system curl instead of the vendored submodule, plus the Qt6GuiPrivate
# CMake fix carried in this directory.
UPSTREAM_REPO="streetpea/chiaki-ng"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(cmake git python-protobuf python-setuptools protobuf
vulkan-headers qt6-base qt6-declarative qt6-svg qt6-webengine
sdl2 ffmpeg fftw hidapi json-c libplacebo miniupnpc opus speexdsp
openssl curl libssh2)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local pkgdir workdir destdir srctree
pkgdir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
srctree="$workdir/src"
git clone --branch "v$ver" --depth 1 "https://github.com/$UPSTREAM_REPO.git" "$srctree"
# use the system curl instead of the vendored submodule
git -C "$srctree" rm -q third-party/curl
sed -i 's:libcurl_shared:libcurl:' "$srctree/lib/CMakeLists.txt"
# newer tags (>= 1.10.0) carry the GuiPrivate fix themselves
if ! grep -q 'GuiPrivate' "$srctree/gui/CMakeLists.txt"; then
patch -d "$srctree" -p1 < "$pkgdir/Qt6GuiPrivate-fix.patch"
fi
git -C "$srctree" submodule update --init
CFLAGS="${CFLAGS:-} -std=gnu17" cmake -B "$workdir/build" -S "$srctree" -Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCHIAKI_USE_SYSTEM_CURL=ON
cmake --build "$workdir/build" -j"$(nproc)"
DESTDIR="$destdir" cmake --install "$workdir/build"
# AGPL-3.0-only-OpenSSL: not a common license, ship the texts
mkdir -p "$destdir/usr/share/licenses/chiaki-ng-bin"
install -m644 "$srctree/LICENSES/"* "$destdir/usr/share/licenses/chiaki-ng-bin/"
rm -f "$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+27
View File
@@ -0,0 +1,27 @@
pkgbase = chromium-widevine-helper-bin
pkgdesc = Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles (prebuilt)
pkgver = 1.0.8
pkgrel = 1
url = https://github.com/GloriousEggroll/chromium-widevine-helper
arch = any
license = GPL-3.0-only
depends = python
depends = procps-ng
depends = ca-certificates
provides = chromium-widevine-helper
conflicts = chromium-widevine-helper
backup = etc/helium/native-messaging-hosts/org.chromium.widevine.json
backup = etc/net.imput.helium/native-messaging-hosts/org.chromium.widevine.json
backup = etc/chromium/native-messaging-hosts/org.chromium.widevine.json
backup = etc/chromium-browser/native-messaging-hosts/org.chromium.widevine.json
backup = etc/opt/chrome/native-messaging-hosts/org.chromium.widevine.json
backup = etc/opt/edge/native-messaging-hosts/org.chromium.widevine.json
backup = etc/brave/native-messaging-hosts/org.chromium.widevine.json
backup = etc/vivaldi/native-messaging-hosts/org.chromium.widevine.json
backup = etc/opera/native-messaging-hosts/org.chromium.widevine.json
backup = etc/thorium/native-messaging-hosts/org.chromium.widevine.json
backup = etc/iridium/native-messaging-hosts/org.chromium.widevine.json
source = chromium-widevine-helper-bin-1.0.8-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/chromium-widevine-helper-bin-1.0.8/chromium-widevine-helper-bin-1.0.8.tar.zst
sha256sums = efb70f082652176710b403a2629333220c1b8b96e3f27f398ba7efb496982829
pkgname = chromium-widevine-helper-bin
+31
View File
@@ -0,0 +1,31 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=chromium-widevine-helper-bin
pkgver=1.0.8
pkgrel=1
pkgdesc="Extension + native helper that installs Google's Widevine CDM into Chromium-based browser profiles (prebuilt)"
arch=('any')
url="https://github.com/GloriousEggroll/chromium-widevine-helper"
license=('GPL-3.0-only')
depends=('python' 'procps-ng' 'ca-certificates')
provides=('chromium-widevine-helper')
conflicts=('chromium-widevine-helper')
backup=('etc/helium/native-messaging-hosts/org.chromium.widevine.json'
'etc/net.imput.helium/native-messaging-hosts/org.chromium.widevine.json'
'etc/chromium/native-messaging-hosts/org.chromium.widevine.json'
'etc/chromium-browser/native-messaging-hosts/org.chromium.widevine.json'
'etc/opt/chrome/native-messaging-hosts/org.chromium.widevine.json'
'etc/opt/edge/native-messaging-hosts/org.chromium.widevine.json'
'etc/brave/native-messaging-hosts/org.chromium.widevine.json'
'etc/vivaldi/native-messaging-hosts/org.chromium.widevine.json'
'etc/opera/native-messaging-hosts/org.chromium.widevine.json'
'etc/thorium/native-messaging-hosts/org.chromium.widevine.json'
'etc/iridium/native-messaging-hosts/org.chromium.widevine.json')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('efb70f082652176710b403a2629333220c1b8b96e3f27f398ba7efb496982829')
package() {
cp -a "$srcdir/usr" "$srcdir/etc" "$pkgdir/"
}
+77
View File
@@ -0,0 +1,77 @@
# chromium-widevine-helper-bin - prebuilt package of
# https://github.com/GloriousEggroll/chromium-widevine-helper
# (Chromium extension + native messaging helper that installs Google's
# Widevine CDM into Chromium-based browser profiles).
#
# Upstream publishes neither releases nor tags; the canonical version lives in
# the Fedora RPM spec on the main branch. build_artifact() snapshots main,
# verifies the snapshot still carries the requested version and assembles the
# install tree following upstream's spec - with Fedora's /usr/libexec
# relocated to /usr/lib, which Arch uses instead.
UPSTREAM_REPO="GloriousEggroll/chromium-widevine-helper"
SPEC_PATH="Packaging/rpm/chromium-widevine-helper.spec"
# Pure noarch install tree (Python script + JSON + extension assets).
BUILD_DEPS=()
spec_version() {
grep -Po '^%global helper_version \K[0-9.]+'
}
latest_version() {
curl -sf "https://raw.githubusercontent.com/$UPSTREAM_REPO/main/$SPEC_PATH" \
| spec_version
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/heads/main.tar.gz" \
| tar -xz -C "$workdir" --strip-components=1
# main may have moved between the version check and this download.
local specver
specver="$(spec_version < "$workdir/$SPEC_PATH")"
if [[ "$specver" != "$ver" ]]; then
echo "snapshot of main is $specver, not the requested $ver - try again" >&2
return 1
fi
install -Dm755 "$workdir/helper/chromium-widevine" \
"$destdir/usr/lib/chromium-widevine/chromium-widevine"
install -d "$destdir/usr/bin"
ln -s /usr/lib/chromium-widevine/chromium-widevine "$destdir/usr/bin/chromium-widevine"
# The extension is shipped so it can be loaded unpacked from
# chrome://extensions (chromium-widevine --install-native-hosts then
# registers whatever ID the browser assigned it).
mkdir -p "$destdir/usr/share/chromium-widevine"
cp -a "$workdir/extension" "$destdir/usr/share/chromium-widevine/extension"
find "$destdir/usr/share/chromium-widevine" -type d -exec chmod 755 {} +
find "$destdir/usr/share/chromium-widevine" -type f -exec chmod 644 {} +
install -Dm644 "$workdir/README.md" \
"$destdir/usr/share/doc/chromium-widevine-helper-bin/README.md"
# System-wide native messaging host manifests for the same browser lookup
# roots upstream's RPM covers.
local hostdir
for hostdir in helium net.imput.helium chromium chromium-browser \
opt/chrome opt/edge brave vivaldi opera thorium iridium; do
install -Dm644 "$workdir/helper/chromium-widevine-native-host.json" \
"$destdir/etc/$hostdir/native-messaging-hosts/org.chromium.widevine.json"
done
# The upstream manifest hardcodes Fedora's /usr/libexec helper path.
find "$destdir/etc" -name 'org.chromium.widevine.json' -exec \
sed -i 's|/usr/libexec/chromium-widevine/|/usr/lib/chromium-widevine/|' {} +
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr etc
rm -rf "$workdir" "$destdir"
}
+27
View File
@@ -0,0 +1,27 @@
pkgbase = faugus-launcher-bin
pkgdesc = Simple and lightweight app for running Windows games using UMU-Launcher (prebuilt)
pkgver = 2.0.2
pkgrel = 1
url = https://github.com/Faugus/faugus-launcher
arch = any
license = MIT
depends = gtk4
depends = libadwaita
depends = libmanette
depends = icoextract
depends = python
depends = python-gobject
depends = python-requests
depends = python-pillow
depends = python-vdf
depends = python-psutil
depends = python-dbus
depends = umu-launcher
optdepends = mangohud: performance overlay
optdepends = gamemode: feral gamemode integration
provides = faugus-launcher
conflicts = faugus-launcher
source = faugus-launcher-bin-2.0.2-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/faugus-launcher-bin-2.0.2/faugus-launcher-bin-2.0.2.tar.zst
sha256sums = 5fcf441cccb1ccc0ac554760e93744d557fd05a3fc4335132a59e55aefe902af
pkgname = faugus-launcher-bin
+24
View File
@@ -0,0 +1,24 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=faugus-launcher-bin
pkgver=2.0.2
pkgrel=1
pkgdesc="Simple and lightweight app for running Windows games using UMU-Launcher (prebuilt)"
arch=('any')
url="https://github.com/Faugus/faugus-launcher"
license=('MIT')
depends=('gtk4' 'libadwaita' 'libmanette' 'icoextract' 'python'
'python-gobject' 'python-requests' 'python-pillow' 'python-vdf'
'python-psutil' 'python-dbus' 'umu-launcher')
optdepends=('mangohud: performance overlay'
'gamemode: feral gamemode integration')
provides=('faugus-launcher')
conflicts=('faugus-launcher')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('5fcf441cccb1ccc0ac554760e93744d557fd05a3fc4335132a59e55aefe902af')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+54
View File
@@ -0,0 +1,54 @@
# faugus-launcher-bin - prebuilt package of https://github.com/Faugus/faugus-launcher
# (GTK4 game launcher for running Windows games through UMU-Launcher, Python).
#
# Upstream ships AppImage/deb/rpm but no Arch-friendly binary, so
# build_artifact() builds the meson project from the release tarball.
UPSTREAM_REPO="Faugus/faugus-launcher"
# Installed in CI (pacman) before build_artifact runs.
# (Translations ship as prebuilt .mo files, so no gettext needed.)
BUILD_DEPS=(meson ninja python)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree sitedir
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/faugus-launcher-$ver"
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
# meson installs the python modules into site-packages, whose path changes
# with every Python minor bump and would silently break a prebuilt package.
# Relocate to a fixed dir and put it on the launcher's PYTHONPATH (the
# launcher script already appends any pre-set PYTHONPATH to its own).
sitedir="$(find "$destdir/usr/lib" -maxdepth 2 -type d -name site-packages)"
[[ -d "$sitedir/faugus" ]] || { echo "faugus module not found in $sitedir" >&2; return 1; }
mkdir -p "$destdir/usr/lib/faugus-launcher"
mv "$sitedir/faugus" "$destdir/usr/lib/faugus-launcher/"
rm -rf "$destdir/usr/lib/python"*
head -1 "$destdir/usr/bin/faugus-launcher" | grep -qx '#!/bin/sh' \
|| { echo "unexpected launcher script format" >&2; return 1; }
sed -i '1a export PYTHONPATH="/usr/lib/faugus-launcher${PYTHONPATH:+:$PYTHONPATH}"' \
"$destdir/usr/bin/faugus-launcher"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+29
View File
@@ -0,0 +1,29 @@
pkgbase = gearlever-bin
pkgdesc = Manage AppImages with ease (prebuilt)
pkgver = 4.6.2
pkgrel = 3
url = https://gearlever.mijorus.it
arch = any
license = GPL-3.0-or-later
depends = gtk4
depends = libadwaita
depends = glib2
depends = dconf
depends = hicolor-icon-theme
depends = python
depends = python-gobject
depends = python-dbus
depends = python-requests
depends = python-pyxdg
depends = 7zip
depends = binutils
depends = squashfs-tools
depends = dwarfs
depends = fuse2
optdepends = libxml2-legacy: required by the LibreOffice AppImage
provides = gearlever
conflicts = gearlever
source = gearlever-bin-4.6.2-3.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/gearlever-bin-4.6.2/gearlever-bin-4.6.2.tar.zst
sha256sums = 225dd08d1fbdf33bb5979660737cee180f60b8cfa6477f1553025a6c2f5236a5
pkgname = gearlever-bin
+27
View File
@@ -0,0 +1,27 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=gearlever-bin
pkgver=4.6.2
pkgrel=3
pkgdesc="Manage AppImages with ease (prebuilt)"
arch=('any')
url="https://gearlever.mijorus.it"
license=('GPL-3.0-or-later')
# dwarfs is only needed for AppImages using a DwarFS filesystem, but a hard
# dependency: without dwarfsck Gear Lever cannot tell those apart from squashfs
# images and fails on them with a confusing "Can't find a valid SQUASHFS
# superblock" from its unsquashfs fallback.
depends=('gtk4' 'libadwaita' 'glib2' 'dconf' 'hicolor-icon-theme' 'python'
'python-gobject' 'python-dbus' 'python-requests' 'python-pyxdg'
'7zip' 'binutils' 'squashfs-tools' 'dwarfs' 'fuse2')
optdepends=('libxml2-legacy: required by the LibreOffice AppImage')
provides=('gearlever')
conflicts=('gearlever')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('225dd08d1fbdf33bb5979660737cee180f60b8cfa6477f1553025a6c2f5236a5')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+65
View File
@@ -0,0 +1,65 @@
# gearlever-bin - prebuilt package of https://github.com/mijorus/gearlever
# ("Gear Lever", a GTK4 + LibAdwaita AppImage manager written in Python).
#
# Upstream only publishes a Flatpak bundle, so build_artifact() builds the
# app from the release tarball and the resulting install tree is published as
# a GitHub release asset of this repository, which the PKGBUILD then uses.
UPSTREAM_REPO="mijorus/gearlever"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(meson ninja glib2 glib2-devel python gettext python-pip)
latest_version() {
# gh instead of curl: unauthenticated GitHub API calls are rate-limited on
# shared CI runner IPs.
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/gearlever-$ver"
# Arch's 7zip package ships /usr/bin/7z, not the 7zz binary the Flatpak
# bundles, and the ELF-offset helper lives in /usr/lib/gearlever instead of
# somewhere on $PATH.
sed -i -e 's/7zz/7z/g' \
-e 's|get_appimage_offset|/usr/lib/gearlever/get_appimage_offset|g' \
"$srctree/src/providers/AppImageProvider.py"
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
install -Dm755 "$srctree/build-aux/get_appimage_offset.sh" \
"$destdir/usr/lib/gearlever/get_appimage_offset"
# src/meson.build uses install_subdir('.'), which drags the meson.build
# files themselves into the install tree.
find "$destdir" -name meson.build -delete
# ftputil and desktop-entry-lib are AUR-only; bundle them (pure python)
# into the app's module dir, which the launcher puts on sys.path. Versions
# come from upstream's requirements.txt pins.
grep -E '^(ftputil|desktop-entry-lib)' "$srctree/requirements.txt" > "$workdir/bundle-reqs.txt"
[[ "$(wc -l < "$workdir/bundle-reqs.txt")" -eq 2 ]] || { echo "expected 2 pinned bundle deps in requirements.txt" >&2; return 1; }
python -m pip install --isolated --no-deps --target "$destdir/usr/share/gearlever" \
-r "$workdir/bundle-reqs.txt"
rm -rf "$destdir/usr/share/gearlever/bin"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
"$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+34
View File
@@ -0,0 +1,34 @@
pkgbase = gnome-network-displays-bin
pkgdesc = Screencasting for GNOME - Miracast and Chromecast (prebuilt)
pkgver = 0.99.0
pkgrel = 1
url = https://gitlab.gnome.org/GNOME/gnome-network-displays
arch = x86_64
license = GPL-3.0-or-later
depends = avahi
depends = dnsmasq
depends = gst-plugin-pipewire
depends = gst-plugins-bad
depends = gst-plugins-good
depends = gst-plugins-ugly
depends = gst-rtsp-server
depends = gstreamer
depends = gtk4
depends = json-glib
depends = libadwaita
depends = libnm
depends = libportal
depends = libportal-gtk4
depends = libpulse
depends = libsoup3
depends = networkmanager
depends = protobuf-c
depends = xdg-desktop-portal
depends = hicolor-icon-theme
optdepends = gstreamer-vaapi: hardware accelerated encoding
provides = gnome-network-displays
conflicts = gnome-network-displays
source = gnome-network-displays-bin-0.99.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/gnome-network-displays-bin-0.99.0/gnome-network-displays-bin-0.99.0.tar.zst
sha256sums = 6e7f93f491226bab6ae54139dcaf009d9cedd8e983b04b5128701c3250936ac1
pkgname = gnome-network-displays-bin
+25
View File
@@ -0,0 +1,25 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=gnome-network-displays-bin
pkgver=0.99.0
pkgrel=1
pkgdesc="Screencasting for GNOME - Miracast and Chromecast (prebuilt)"
arch=('x86_64')
url="https://gitlab.gnome.org/GNOME/gnome-network-displays"
license=('GPL-3.0-or-later')
depends=('avahi' 'dnsmasq' 'gst-plugin-pipewire' 'gst-plugins-bad'
'gst-plugins-good' 'gst-plugins-ugly' 'gst-rtsp-server' 'gstreamer'
'gtk4' 'json-glib' 'libadwaita' 'libnm' 'libportal' 'libportal-gtk4'
'libpulse' 'libsoup3' 'networkmanager' 'protobuf-c'
'xdg-desktop-portal' 'hicolor-icon-theme')
optdepends=('gstreamer-vaapi: hardware accelerated encoding')
provides=('gnome-network-displays')
conflicts=('gnome-network-displays')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('6e7f93f491226bab6ae54139dcaf009d9cedd8e983b04b5128701c3250936ac1')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+47
View File
@@ -0,0 +1,47 @@
# gnome-network-displays-bin - prebuilt package of
# https://gitlab.gnome.org/GNOME/gnome-network-displays
# (GNOME screencasting via Miracast/Chromecast, C + GTK4/LibAdwaita).
#
# Upstream publishes no binary assets, so build_artifact() builds from the
# GitLab release tarball.
GITLAB_PROJECT="GNOME%2Fgnome-network-displays"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(meson ninja glib2-devel gettext gtk4 libadwaita gstreamer
gst-rtsp-server gst-plugins-bad json-glib libnm libportal
libportal-gtk4 libpulse libsoup3 protobuf-c avahi)
latest_version() {
curl -sf "https://gitlab.gnome.org/api/v4/projects/$GITLAB_PROJECT/releases?per_page=1" \
| jq -r '.[0].tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://gitlab.gnome.org/GNOME/gnome-network-displays/-/archive/$ver/gnome-network-displays-$ver.tar.gz" \
| tar -xz -C "$workdir"
srctree="$workdir/gnome-network-displays-$ver"
# Arch has no /usr/libexec; same fix as the AUR source package
sed -i 's/libexec/lib/g' "$srctree/src/nd-systemd-helpers.c" "$srctree/src/meson.build"
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
"$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+21
View File
@@ -0,0 +1,21 @@
pkgbase = librepods-bin
pkgdesc = AirPods liberated from Apple's ecosystem (prebuilt)
pkgver = 1.0.0rc1
pkgrel = 1
url = https://github.com/librepods-org/librepods
arch = x86_64
license = GPL-3.0-only
depends = glibc
depends = gcc-libs
depends = hicolor-icon-theme
depends = libpulse
depends = openssl
depends = qt6-base
depends = qt6-connectivity
depends = qt6-declarative
provides = librepods
conflicts = librepods
source = librepods-bin-1.0.0rc1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/librepods-bin-1.0.0rc1/librepods-bin-1.0.0rc1.tar.zst
sha256sums = 69ce19414a0205d1d19fb851f6adea6c231013df6ec8a32bc8122d5fd6e9dd52
pkgname = librepods-bin
+21
View File
@@ -0,0 +1,21 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=librepods-bin
pkgver=1.0.0rc1
pkgrel=1
pkgdesc="AirPods liberated from Apple's ecosystem (prebuilt)"
arch=('x86_64')
url="https://github.com/librepods-org/librepods"
license=('GPL-3.0-only')
depends=('glibc' 'gcc-libs' 'hicolor-icon-theme' 'libpulse' 'openssl'
'qt6-base' 'qt6-connectivity' 'qt6-declarative')
provides=('librepods')
conflicts=('librepods')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('69ce19414a0205d1d19fb851f6adea6c231013df6ec8a32bc8122d5fd6e9dd52')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+46
View File
@@ -0,0 +1,46 @@
# librepods-bin - prebuilt package of https://github.com/librepods-org/librepods
# (AirPods integration for Linux, Qt6/C++ client in the linux/ subdirectory).
#
# Upstream releases carry only Android APKs, so build_artifact() builds the
# Linux client from the release tarball. Upstream tags look like v1.0.0-rc1;
# pkgver strips the hyphen (1.0.0rc1, sorts before 1.0.0 in vercmp) and
# build_artifact re-inserts it for the tag URL.
UPSTREAM_REPO="librepods-org/librepods"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(cmake qt6-base qt6-connectivity qt6-declarative qt6-tools
libpulse openssl)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//; s/-//g'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local upver workdir destdir srctree
upver="$(sed -E 's/([a-z])/-\1/' <<< "$ver")"
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$upver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/librepods-$upver"
cmake -B "$workdir/build" -S "$srctree/linux" -Wno-dev \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_SKIP_RPATH=TRUE
cmake --build "$workdir/build" -j"$(nproc)"
DESTDIR="$destdir" cmake --install "$workdir/build"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+19
View File
@@ -0,0 +1,19 @@
pkgbase = lunar-client-bin
pkgdesc = PvP modpack for all modern versions of Minecraft (upstream AppImage)
pkgver = 3.7.12
pkgrel = 1
url = https://lunarclient.com
arch = x86_64
license = LicenseRef-proprietary
depends = fuse2
depends = xorg-xrandr
provides = lunar-client
provides = lunarclient
conflicts = lunar-client
conflicts = lunarclient
options = !strip
options = !debug
source = lunarclient-3.7.12.AppImage::https://launcherupdates.lunarclientcdn.com/Lunar%20Client-3.7.12-ow.AppImage
sha256sums = 7364e876a59291d8b0b7d6c0efdacb988617e35e054e9c21a5814d071710bf98
pkgname = lunar-client-bin
+48
View File
@@ -0,0 +1,48 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=lunar-client-bin
_pkgname=lunarclient
pkgver=3.7.12
pkgrel=1
pkgdesc="PvP modpack for all modern versions of Minecraft (upstream AppImage)"
arch=('x86_64')
url="https://lunarclient.com"
license=('LicenseRef-proprietary')
depends=('fuse2' 'xorg-xrandr')
provides=('lunar-client' 'lunarclient')
conflicts=('lunar-client' 'lunarclient')
options=('!strip' '!debug')
# maintained by CI together with pkgver (upstream varies the filename suffix)
_appimage="Lunar%20Client-3.7.12-ow.AppImage"
source=("${_pkgname}-${pkgver}.AppImage::https://launcherupdates.lunarclientcdn.com/${_appimage}")
sha256sums=('7364e876a59291d8b0b7d6c0efdacb988617e35e054e9c21a5814d071710bf98')
prepare() {
chmod +x "${_pkgname}-${pkgver}.AppImage"
"./${_pkgname}-${pkgver}.AppImage" --appimage-extract
}
build() {
# make the .desktop file work outside of the AppImage container
sed -i -E "s|Exec=AppRun|Exec=env DESKTOPINTEGRATION=false /usr/bin/${_pkgname}|" \
"squashfs-root/${_pkgname}.desktop"
# AppImage directory permissions are 700
chmod -R a-x+rX squashfs-root/usr
}
package() {
install -Dm755 "${srcdir}/${_pkgname}-${pkgver}.AppImage" \
"${pkgdir}/opt/${_pkgname}/${_pkgname}.AppImage"
install -Dm644 "${srcdir}/squashfs-root/${_pkgname}.desktop" \
"${pkgdir}/usr/share/applications/${_pkgname}.desktop"
install -Dm644 \
"${srcdir}/squashfs-root/usr/share/icons/hicolor/1024x1024/apps/${_pkgname}.png" \
"${pkgdir}/usr/share/icons/hicolor/512x512/apps/${_pkgname}.png"
install -dm755 "${pkgdir}/usr/bin"
ln -s "/opt/${_pkgname}/${_pkgname}.AppImage" "${pkgdir}/usr/bin/${_pkgname}"
}
+46
View File
@@ -0,0 +1,46 @@
# lunar-client-bin - Lunar Client (https://lunarclient.com), Minecraft PvP
# modpack launcher, proprietary Electron AppImage.
#
# Upstream hosts versioned AppImages itself, so there is no build_artifact():
# on a new version pkgver, the artifact filename (_appimage) and the checksum
# are refreshed. Upstream currently publishes on the "ow" electron-updater
# channel (latest-ow-linux.yml) with an -ow filename suffix; the old plain
# channel (latest-linux.yml) went stale but is still checked in case they
# switch back - whichever carries the higher version wins.
DL_BASE="https://launcherupdates.lunarclientcdn.com"
_channel_version() {
curl -sf "$DL_BASE/$1" | grep -Po '^version: \K\S+'
}
latest_version() {
local a b
a="$(_channel_version latest-ow-linux.yml | sed 's/-.*//')"
b="$(_channel_version latest-linux.yml | sed 's/-.*//')"
[[ -n "$a" || -n "$b" ]] || return 1
if [[ -n "$a" && -n "$b" ]]; then
if [[ "$(vercmp "$a" "$b")" -ge 0 ]]; then echo "$a"; else echo "$b"; fi
else
echo "${a:-$b}"
fi
}
# refresh_checksums <version> <pkgbuild-path>
refresh_checksums() {
local ver="$1" pkgbuild="$2"
local yml file sha
for yml in latest-ow-linux.yml latest-linux.yml; do
file="$(curl -sf "$DL_BASE/$yml" | grep -Po '^path: \K.*\.AppImage')"
[[ "$file" == *"$ver"* ]] && break
file=""
done
[[ -n "$file" ]] || { echo "no updater channel carries version $ver" >&2; return 1; }
file="${file// /%20}"
sha="$(curl -sfL "$DL_BASE/$file" | sha256sum | cut -d' ' -f1)"
sed -i \
-e "s|^_appimage=.*|_appimage=\"$file\"|" \
-e "s|^sha256sums=.*|sha256sums=('$sha')|" \
"$pkgbuild"
}
+19
View File
@@ -0,0 +1,19 @@
pkgbase = modrinth-app-bin
pkgdesc = Minecraft mod manager and launcher from Modrinth (upstream binary)
pkgver = 0.16.1
pkgrel = 1
url = https://modrinth.com/app
arch = x86_64
license = GPL-3.0-only
depends = webkit2gtk-4.1
depends = gtk3
depends = hicolor-icon-theme
provides = modrinth-app
conflicts = modrinth-app
noextract = modrinth-app-bin-0.16.1.deb
options = !strip
options = !debug
source = modrinth-app-bin-0.16.1.deb::https://github.com/modrinth/code/releases/download/v0.16.1/Modrinth.App_0.16.1_amd64.deb
sha256sums = 484c721e90f8628550d5920ea0a128fe77cc23f281ef4fdaa82bd9f044345c7e
pkgname = modrinth-app-bin
+24
View File
@@ -0,0 +1,24 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=modrinth-app-bin
pkgver=0.16.1
pkgrel=1
pkgdesc="Minecraft mod manager and launcher from Modrinth (upstream binary)"
arch=('x86_64')
url="https://modrinth.com/app"
license=('GPL-3.0-only')
depends=('webkit2gtk-4.1' 'gtk3' 'hicolor-icon-theme')
provides=('modrinth-app')
conflicts=('modrinth-app')
options=('!strip' '!debug')
source=("${pkgname}-${pkgver}.deb::https://github.com/modrinth/code/releases/download/v${pkgver}/Modrinth.App_${pkgver}_amd64.deb")
noextract=("${pkgname}-${pkgver}.deb")
sha256sums=('484c721e90f8628550d5920ea0a128fe77cc23f281ef4fdaa82bd9f044345c7e')
package() {
bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.deb" 'data.tar.*' \
| bsdtar -xpf - -C "$pkgdir" usr
ln -s ModrinthApp "$pkgdir/usr/bin/modrinth-app"
}
+21
View File
@@ -0,0 +1,21 @@
# modrinth-app-bin - Modrinth App (https://github.com/modrinth/code),
# Minecraft mod manager/launcher, Tauri.
#
# Upstream publishes a bundled .deb per release, so there is no
# build_artifact() here: on a new version only pkgver and the checksum are
# refreshed and the PKGBUILD repackages the deb directly.
UPSTREAM_REPO="modrinth/code"
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# refresh_checksums <version> <pkgbuild-path>
refresh_checksums() {
local ver="$1" pkgbuild="$2"
local sha
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/Modrinth.App_${ver}_amd64.deb" \
| sha256sum | cut -d' ' -f1)"
sed -i "s|^sha256sums=.*|sha256sums=('$sha')|" "$pkgbuild"
}
+29
View File
@@ -0,0 +1,29 @@
pkgbase = planify-bin
pkgdesc = Task manager with Todoist and Nextcloud support (prebuilt, bundles gxml)
pkgver = 4.19.5
pkgrel = 1
url = https://useplanify.com
arch = x86_64
license = GPL-3.0-or-later
depends = evolution-data-server
depends = gtk4
depends = gtksourceview5
depends = icu
depends = json-glib
depends = libadwaita
depends = libgee
depends = libical
depends = libportal
depends = libportal-gtk4
depends = libsecret
depends = libsoup3
depends = libspelling
depends = sqlite
depends = hicolor-icon-theme
provides = planify
conflicts = planify
conflicts = elementary-planner
source = planify-bin-4.19.5-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/planify-bin-4.19.5/planify-bin-4.19.5.tar.zst
sha256sums = 563a80c7660b207f6c139e0f78bcb49631e8369be29369a7a984b022816b8c0f
pkgname = planify-bin
+22
View File
@@ -0,0 +1,22 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=planify-bin
pkgver=4.19.5
pkgrel=1
pkgdesc="Task manager with Todoist and Nextcloud support (prebuilt, bundles gxml)"
arch=('x86_64')
url="https://useplanify.com"
license=('GPL-3.0-or-later')
depends=('evolution-data-server' 'gtk4' 'gtksourceview5' 'icu' 'json-glib'
'libadwaita' 'libgee' 'libical' 'libportal' 'libportal-gtk4'
'libsecret' 'libsoup3' 'libspelling' 'sqlite' 'hicolor-icon-theme')
provides=('planify')
conflicts=('planify' 'elementary-planner')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('563a80c7660b207f6c139e0f78bcb49631e8369be29369a7a984b022816b8c0f')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+57
View File
@@ -0,0 +1,57 @@
# planify-bin - prebuilt package of https://github.com/alainm23/planify
# (task manager with Todoist/Nextcloud support, Vala/GTK4 + LibAdwaita).
#
# Upstream publishes no binary assets, so build_artifact() builds from the
# release tarball. The chrono and gxml dependencies are resolved through the
# meson wrap subprojects upstream ships (gxml is not packaged in the official
# Arch repos, so the library ends up bundled inside this package).
UPSTREAM_REPO="alainm23/planify"
# Installed in CI (pacman) before build_artifact runs. gxml is deliberately
# absent: meson then falls back to the bundled gxml-0.20.wrap subproject.
BUILD_DEPS=(meson ninja vala git gobject-introspection gettext glib2-devel
gtk4 libadwaita libgee gtksourceview5 json-glib libical libportal
libportal-gtk4 libsecret libsoup3 libspelling sqlite
evolution-data-server icu)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/planify-$ver"
# The preferences dialog suggests a flatpak-only quick-add command; point it
# at the plain binary instead (same fix as the AUR source package).
grep -q 'flatpak run --command=io.github.alainm23.planify.quick-add' \
"$srctree/src/Dialogs/Preferences/Pages/QuickAdd.vala" \
&& sed -i 's|flatpak run --command=io.github.alainm23.planify.quick-add|io.github.alainm23.planify.quick-add|' \
"$srctree/src/Dialogs/Preferences/Pages/QuickAdd.vala" \
|| echo "WARNING: quick-add flatpak command not found, sed skipped" >&2
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
# convenience names, as in the AUR source package
ln -s io.github.alainm23.planify "$destdir/usr/bin/planify"
ln -s io.github.alainm23.planify.quick-add "$destdir/usr/bin/planify.quick-add"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
"$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+20
View File
@@ -0,0 +1,20 @@
pkgbase = protonplus-bin
pkgdesc = Modern compatibility tools manager (prebuilt)
pkgver = 0.5.22
pkgrel = 1
url = https://github.com/Vysp3r/ProtonPlus
arch = x86_64
license = GPL-3.0-or-later
depends = gtk4
depends = json-glib
depends = libadwaita
depends = libarchive
depends = libgee
depends = libsoup3
depends = hicolor-icon-theme
provides = protonplus
conflicts = protonplus
source = protonplus-bin-0.5.22-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/protonplus-bin-0.5.22/protonplus-bin-0.5.22.tar.zst
sha256sums = b5e0d6966c62f624017f0672688c3d57b2fda637ecbe47cc50dd043a92c52770
pkgname = protonplus-bin
+21
View File
@@ -0,0 +1,21 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=protonplus-bin
pkgver=0.5.22
pkgrel=1
pkgdesc="Modern compatibility tools manager (prebuilt)"
arch=('x86_64')
url="https://github.com/Vysp3r/ProtonPlus"
license=('GPL-3.0-or-later')
depends=('gtk4' 'json-glib' 'libadwaita' 'libarchive' 'libgee' 'libsoup3'
'hicolor-icon-theme')
provides=('protonplus')
conflicts=('protonplus')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('b5e0d6966c62f624017f0672688c3d57b2fda637ecbe47cc50dd043a92c52770')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+40
View File
@@ -0,0 +1,40 @@
# protonplus-bin - prebuilt package of https://github.com/Vysp3r/ProtonPlus
# (GTK4 + LibAdwaita compatibility-tools manager written in Vala).
#
# Upstream publishes no binary release assets, so build_artifact() compiles
# the Vala project from the release tarball (native x86_64 binary).
UPSTREAM_REPO="Vysp3r/ProtonPlus"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(meson ninja vala gtk4 libadwaita json-glib libgee libsoup3
libarchive gettext glib2-devel)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/ProtonPlus-$ver"
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release -Dstrip=true
meson install -C "$workdir/build" --destdir "$destdir"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
"$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+20 -1
View File
@@ -112,7 +112,7 @@ mv "$pkg/.SRCINFO.new" "$pkg/.SRCINFO"
# drop downloaded sources and build leftovers (all gitignored, never tracked) # drop downloaded sources and build leftovers (all gitignored, never tracked)
rm -rf "$pkg/src" "$pkg/pkg" rm -rf "$pkg/src" "$pkg/pkg"
rm -f "$pkg"/*.pkg.tar.* "$pkg"/*.tar.zst "$pkg"/*.tar.gz rm -f "$pkg"/*.pkg.tar.* "$pkg"/*.tar.zst "$pkg"/*.tar.gz "$pkg"/*.deb "$pkg"/*.AppImage
### 4: commit back to this repository ######################################## ### 4: commit back to this repository ########################################
@@ -170,3 +170,22 @@ else
git push origin HEAD:master git push origin HEAD:master
echo "$pkg: pushed $ver-$rel to the AUR" echo "$pkg: pushed $ver-$rel to the AUR"
fi fi
### 6: prune superseded GitHub releases ######################################
# Build-mode packages get one release per version; once a newer version is
# fully published (asset built, PKGBUILD updated, AUR pushed - i.e. we got
# this far) the older releases are no longer referenced by anything, so drop
# them together with their tags. Runs every time to also catch leftovers.
cd "$repo_root"
if declare -f build_artifact >/dev/null; then
while IFS= read -r tag; do
[[ "$tag" == "$pkg-$ver" ]] && continue
rest="${tag#"$pkg-"}"
# only this package's tags: "<pkg>-<version>" (a pkgver never contains
# "-", which also keeps prefix-sharing package names apart)
[[ "$tag" == "$pkg-"* && "$rest" != *-* ]] || continue
echo "$pkg: deleting superseded release $tag"
gh release delete "$tag" --cleanup-tag --yes
done < <(gh release list --limit 100 --json tagName -q '.[].tagName')
fi
+27
View File
@@ -0,0 +1,27 @@
pkgbase = sharpemu-bin
pkgdesc = Experimental PlayStation 5 emulator (prebuilt)
pkgver = 0.0.2_beta.5
pkgrel = 1
url = https://github.com/sharpemu/sharpemu
arch = x86_64
license = GPL-2.0-or-later
depends = glibc
depends = gcc-libs
depends = icu
depends = openssl
depends = vulkan-icd-loader
depends = libx11
depends = libxcursor
depends = libxi
depends = libxinerama
depends = libxrandr
depends = libxkbcommon
depends = wayland
provides = sharpemu
conflicts = sharpemu
noextract = sharpemu-0.0.2-beta.5-linux-x64.tar.gz
options = !strip
source_x86_64 = https://github.com/sharpemu/sharpemu/releases/download/v0.0.2-beta.5/sharpemu-0.0.2-beta.5-linux-x64.tar.gz
sha256sums_x86_64 = 5e75173da220832e8ca56d4b88fd7effc77772da9b785bfb721ff138d5664cc4
pkgname = sharpemu-bin
+39
View File
@@ -0,0 +1,39 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=sharpemu-bin
pkgver=0.0.2_beta.5
pkgrel=1
pkgdesc="Experimental PlayStation 5 emulator (prebuilt)"
arch=('x86_64')
url="https://github.com/sharpemu/sharpemu"
license=('GPL-2.0-or-later')
# The self-contained .NET binary bundles its own libglfw.so.3, which in turn
# dlopens the X11/Wayland client libraries at runtime.
depends=('glibc' 'gcc-libs' 'icu' 'openssl' 'vulkan-icd-loader'
'libx11' 'libxcursor' 'libxi' 'libxinerama' 'libxrandr'
'libxkbcommon' 'wayland')
provides=('sharpemu')
conflicts=('sharpemu')
options=('!strip')
# upstream tags use hyphens (v0.0.2-beta.4), which pkgver must not contain
_upver="${pkgver//_/-}"
noextract=("sharpemu-${_upver}-linux-x64.tar.gz")
source_x86_64=("https://github.com/sharpemu/sharpemu/releases/download/v${_upver}/sharpemu-${_upver}-linux-x64.tar.gz")
sha256sums_x86_64=('5e75173da220832e8ca56d4b88fd7effc77772da9b785bfb721ff138d5664cc4')
package() {
# extracted straight into pkgdir so new files in future upstream archives
# are picked up automatically
install -d "$pkgdir/opt/$pkgname"
tar -xzf "$srcdir/sharpemu-${_upver}-linux-x64.tar.gz" -C "$pkgdir/opt/$pkgname"
chmod 755 "$pkgdir/opt/$pkgname/SharpEmu"
install -d "$pkgdir/usr/bin"
ln -s "/opt/$pkgname/SharpEmu" "$pkgdir/usr/bin/sharpemu"
install -Dm644 "$pkgdir/opt/$pkgname/LICENSE.txt" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE.txt"
}
+28
View File
@@ -0,0 +1,28 @@
# sharpemu-bin - SharpEmu (https://github.com/sharpemu/sharpemu), an
# experimental PlayStation 5 emulator written in C#.
#
# Upstream publishes prebuilt linux-x64 release assets itself, so there is no
# build_artifact() here: on a new version only pkgver and the checksums are
# refreshed and the result is pushed to the AUR.
#
# Upstream versions contain hyphens (v0.0.2-beta.4), which an Arch pkgver
# must not; latest_version therefore reports the underscored form
# (0.0.2_beta.4) and the PKGBUILD derives the upstream form back via _upver.
UPSTREAM_REPO="sharpemu/sharpemu"
latest_version() {
# gh instead of plain curl: authenticated API calls, so shared-IP rate
# limits on the CI runners can't bite.
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' \
| sed -e 's/^v//' -e 's/-/_/g'
}
# refresh_checksums <version> <pkgbuild-path>
refresh_checksums() {
local ver="$1" pkgbuild="$2"
local upver="${ver//_/-}" sha
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$upver/sharpemu-$upver-linux-x64.tar.gz" \
| sha256sum | cut -d' ' -f1)"
sed -i "s|^sha256sums_x86_64=.*|sha256sums_x86_64=('$sha')|" "$pkgbuild"
}
+18
View File
@@ -0,0 +1,18 @@
pkgbase = snapx-bin
pkgdesc = Screenshot tool that handles images, text, and video - ShareX fork, Avalonia UI (upstream binary)
pkgver = 0.4.0
pkgrel = 1
url = https://github.com/SnapXL/SnapX
arch = x86_64
license = GPL-3.0-or-later
depends = glibc
depends = gcc-libs
depends = hicolor-icon-theme
provides = snapx-ui
conflicts = snapx-ui
options = !strip
options = !debug
source = snapx-bin-0.4.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/snapx-bin-0.4.0/snapx-bin-0.4.0.tar.zst
sha256sums = d2098cac542bca82e68be0a4fa98db22f2d84d35c683d18582382dc9206eb5ee
pkgname = snapx-bin
+22
View File
@@ -0,0 +1,22 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=snapx-bin
pkgver=0.4.0
pkgrel=1
pkgdesc="Screenshot tool that handles images, text, and video - ShareX fork, Avalonia UI (upstream binary)"
arch=('x86_64')
url="https://github.com/SnapXL/SnapX"
license=('GPL-3.0-or-later')
depends=('glibc' 'gcc-libs' 'hicolor-icon-theme')
provides=('snapx-ui')
conflicts=('snapx-ui')
options=('!strip' '!debug')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('d2098cac542bca82e68be0a4fa98db22f2d84d35c683d18582382dc9206eb5ee')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
cp -a "$srcdir/opt" "$pkgdir/"
}
+52
View File
@@ -0,0 +1,52 @@
# snapx-bin - SnapX (https://github.com/SnapXL/SnapX), screenshot/sharing
# tool forked from ShareX, C#/.NET Avalonia UI.
#
# Upstream ships a self-contained Linux bundle per (pre)release, but the
# asset names embed build metadata (e.g. ...-0.4.0-alpha.0+g7eafb0f-X64...)
# that cannot be derived from the version alone. build_artifact() therefore
# resolves the asset by pattern via the GitHub API and repackages it under
# our own predictable name. All upstream releases are marked prerelease, so
# latest_version() reads the release list instead of /latest.
UPSTREAM_REPO="SnapXL/SnapX"
BUILD_DEPS=()
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases" --jq '.[0].tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir asset
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
asset="$(gh api "repos/$UPSTREAM_REPO/releases/tags/v$ver" --jq '.assets[].name' \
| grep '^SnapX-UI-Release-Linux-' | grep -v musl | grep -- '-X64\.tar\.zst$')"
[[ "$(wc -l <<< "$asset")" -eq 1 ]] || { echo "expected exactly one UI asset, got: $asset" >&2; return 1; }
gh release download "v$ver" -R "$UPSTREAM_REPO" --pattern "$asset" --dir "$workdir"
mkdir -p "$destdir/opt/snapx"
tar -xf "$workdir/$asset" -C "$destdir/opt/snapx"
chmod 755 "$destdir/opt/snapx/snapx-ui"
# upstream's launcher resolves its own directory, so a symlink from
# /usr/bin would break it - use a wrapper instead
mkdir -p "$destdir/usr/bin"
cat > "$destdir/usr/bin/snapx-ui" << 'EOF'
#!/bin/sh
exec /opt/snapx/snapx-ui "$@"
EOF
chmod 755 "$destdir/usr/bin/snapx-ui"
# desktop file, icons and metainfo from the source tree
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
cp -a "$workdir/SnapX-$ver/packaging/usr/share" "$destdir/usr/"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr opt
rm -rf "$workdir" "$destdir"
}
+17
View File
@@ -0,0 +1,17 @@
pkgbase = thonny-bin
pkgdesc = Python IDE for beginners (prebuilt, with bundled Python runtime)
pkgver = 5.0.0
pkgrel = 1
url = https://github.com/thonny/thonny
arch = x86_64
license = MIT
depends = glibc
depends = gcc-libs
optdepends = libnotify: desktop notifications (dlopened by Tk)
provides = thonny
conflicts = thonny
options = !strip
source = thonny-bin-5.0.0-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/thonny-bin-5.0.0/thonny-bin-5.0.0.tar.zst
sha256sums = 7baea7ff70d7aa6e86fa1153ba8f156d8f5a402ddb5279d8e15ceceb4aaa53e5
pkgname = thonny-bin
+24
View File
@@ -0,0 +1,24 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=thonny-bin
pkgver=5.0.0
pkgrel=1
pkgdesc="Python IDE for beginners (prebuilt, with bundled Python runtime)"
arch=('x86_64')
url="https://github.com/thonny/thonny"
license=('MIT')
# The bundled standalone CPython (python-build-standalone) links everything
# else - including tcl/tk 9 and its X11 client libraries - statically.
depends=('glibc' 'gcc-libs')
optdepends=('libnotify: desktop notifications (dlopened by Tk)')
provides=('thonny')
conflicts=('thonny')
options=('!strip')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('7baea7ff70d7aa6e86fa1153ba8f156d8f5a402ddb5279d8e15ceceb4aaa53e5')
package() {
cp -a "$srcdir/opt" "$srcdir/usr" "$pkgdir/"
}
+102
View File
@@ -0,0 +1,102 @@
# thonny-bin - Thonny (https://github.com/thonny/thonny), a Python IDE for
# beginners.
#
# Since 5.0 upstream ships no prebuilt Linux bundle anymore - the official
# installer script just creates a venv from the system Python and
# pip-installs thonny plus a pinned set of extras. A venv tied to the system
# Python would silently break on every Arch Python minor bump, so
# build_artifact() instead bundles a relocatable standalone CPython
# (astral-sh/python-build-standalone, tkinter included) into /opt/thonny-bin
# and pip-installs into that, mirroring the dependency pins of upstream's
# installer script. The install tree is published as a GitHub release asset
# of this repository, which the PKGBUILD then uses.
UPSTREAM_REPO="thonny/thonny"
# Series of the bundled CPython; bump deliberately (thonny 5.x supports
# Python 3.9-3.15).
PYTHON_SERIES="3.13"
BUILD_DEPS=()
latest_version() {
# gh instead of plain curl: authenticated API calls, so shared-IP rate
# limits on the CI runners can't bite.
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir root prefix py
workdir="$(mktemp -d)"
root="$workdir/root"
prefix="$root/opt/thonny-bin"
mkdir -p "$prefix"
gh release download -R astral-sh/python-build-standalone \
--pattern "cpython-${PYTHON_SERIES}.*-x86_64-unknown-linux-gnu-install_only_stripped.tar.gz" \
--dir "$workdir"
tar -xzf "$workdir"/cpython-*.tar.gz -C "$workdir"
cp -a "$workdir/python/." "$prefix/"
py="$prefix/bin/python3"
# Upstream's installer script is the authority on which extra packages
# (and pins) belong to a release - parse its pip install line instead of
# hardcoding a list that would go stale.
curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/thonny-$ver.bash" \
-o "$workdir/installer.bash"
local extras=()
mapfile -t extras < <(grep -m1 -- "-m pip install '" "$workdir/installer.bash" \
| grep -oP "'[^']*'" | sed "s/^'//; s/'\$//")
if [[ ${#extras[@]} -eq 0 ]]; then
echo "thonny-bin: could not parse the extras list from the installer script" >&2
return 1
fi
"$py" -m pip install --no-cache-dir --no-compile "${extras[@]}" "thonny==$ver"
# pip wrote the staging path into the script shebangs; point them at the
# final install location.
local f
for f in "$prefix/bin/"*; do
[[ -f "$f" && ! -L "$f" && "$(head -c 2 "$f")" == '#!' ]] || continue
sed -i "1s|$prefix|/opt/thonny-bin|" "$f"
done
# Precompile with the final paths recorded in the .pyc files - users can't
# write __pycache__ under /opt at runtime. Some packages ship
# intentionally uncompilable files, hence the || true.
"$py" -m compileall -q -s "$root" "$prefix/lib" || true
local sitepkg
sitepkg="$("$py" -c 'import os, thonny; print(os.path.dirname(thonny.__file__))')"
install -d "$root/usr/bin" "$root/usr/share/applications" \
"$root/usr/share/pixmaps" "$root/usr/share/licenses/thonny-bin"
ln -s /opt/thonny-bin/bin/thonny "$root/usr/bin/thonny"
cp "$sitepkg/res/thonny.png" "$root/usr/share/pixmaps/thonny.png"
curl -sfL "https://raw.githubusercontent.com/$UPSTREAM_REPO/v$ver/LICENSE.txt" \
-o "$root/usr/share/licenses/thonny-bin/LICENSE.txt"
# Mirrors the launcher that upstream's installer script generates.
cat > "$root/usr/share/applications/thonny.desktop" <<'EOF'
[Desktop Entry]
Type=Application
Name=Thonny
GenericName=Python IDE
Comment=Python IDE for beginners
Exec=/opt/thonny-bin/bin/thonny %F
Icon=thonny
StartupWMClass=Thonny
Terminal=false
Categories=Development;IDE;
Keywords=programming;education;
MimeType=text/x-python;
EOF
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$root" opt usr
rm -rf "$workdir"
}
+1 -1
View File
@@ -19,7 +19,7 @@ pkgbase = timetable-bin
provides = timetable provides = timetable
conflicts = untis conflicts = untis
conflicts = timetable conflicts = timetable
source = https://github.com/Felitendo/PKGBUILDS/releases/download/timetable-bin-4.2.1/timetable-bin-4.2.1.tar.zst source = timetable-bin-4.2.1-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/timetable-bin-4.2.1/timetable-bin-4.2.1.tar.zst
sha256sums = c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc sha256sums = c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc
pkgname = timetable-bin pkgname = timetable-bin
+1 -1
View File
@@ -13,7 +13,7 @@ depends=('gtk4' 'libadwaita' 'webkitgtk-6.0' 'libsecret' 'python' 'python-gobjec
'python-requests' 'python-pyotp' 'glib2' 'hicolor-icon-theme') 'python-requests' 'python-pyotp' 'glib2' 'hicolor-icon-theme')
provides=('untis' 'timetable') provides=('untis' 'timetable')
conflicts=('untis' 'timetable') conflicts=('untis' 'timetable')
source=("https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst") source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc') sha256sums=('c68179716fdb5eb6268203168207a1ea7d03a75456c00de38d152dc6098bd0dc')
package() { package() {
+17
View File
@@ -0,0 +1,17 @@
pkgbase = trayscale-bin
pkgdesc = Unofficial GUI wrapper for the Tailscale CLI client (prebuilt)
pkgver = 0.18.9
pkgrel = 1
url = https://github.com/DeedleFake/trayscale
arch = x86_64
license = MIT
depends = gtk4
depends = libadwaita
depends = hicolor-icon-theme
optdepends = tailscale: provides the daemon that manages the connection
provides = trayscale
conflicts = trayscale
source = trayscale-bin-0.18.9-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/trayscale-bin-0.18.9/trayscale-bin-0.18.9.tar.zst
sha256sums = 1b24f332a64a682e972e94fecfc11a7d719a1c74c5fd897c45c08cbd17d0ae93
pkgname = trayscale-bin
+21
View File
@@ -0,0 +1,21 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=trayscale-bin
pkgver=0.18.9
pkgrel=1
pkgdesc="Unofficial GUI wrapper for the Tailscale CLI client (prebuilt)"
arch=('x86_64')
url="https://github.com/DeedleFake/trayscale"
license=('MIT')
depends=('gtk4' 'libadwaita' 'hicolor-icon-theme')
optdepends=('tailscale: provides the daemon that manages the connection')
provides=('trayscale')
conflicts=('trayscale')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('1b24f332a64a682e972e94fecfc11a7d719a1c74c5fd897c45c08cbd17d0ae93')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+36
View File
@@ -0,0 +1,36 @@
# trayscale-bin - prebuilt package of https://github.com/DeedleFake/trayscale
# (unofficial GTK4 + LibAdwaita GUI for the Tailscale CLI, written in Go).
#
# Upstream publishes no Linux binary assets, so build_artifact() builds the
# Go binary from the release tarball via upstream's dist.sh (slow: the gotk4
# bindings take a while to compile).
UPSTREAM_REPO="DeedleFake/trayscale"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(go gtk4 libadwaita gobject-introspection)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/trayscale-$ver"
(cd "$srctree" && \
GOMODCACHE="$workdir/gomodcache" GOFLAGS="-modcacherw" \
./dist.sh build "v$ver" && \
./dist.sh install "$destdir/usr")
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+27
View File
@@ -0,0 +1,27 @@
pkgbase = vacuumtube-bin
pkgdesc = YouTube Leanback (TV UI) in Electron, with a built-in adblocker (upstream binary)
pkgver = 1.8.1
pkgrel = 1
url = https://github.com/shy1132/VacuumTube
arch = x86_64
license = MIT
depends = gtk3
depends = nss
depends = alsa-lib
depends = libnotify
depends = libxss
depends = libxtst
depends = xdg-utils
depends = at-spi2-core
depends = util-linux-libs
depends = libsecret
optdepends = libappindicator-gtk3: tray icon support
provides = vacuumtube
conflicts = vacuumtube
noextract = vacuumtube-bin-1.8.1.deb
options = !strip
options = !debug
source = vacuumtube-bin-1.8.1.deb::https://github.com/shy1132/VacuumTube/releases/download/v1.8.1/VacuumTube-amd64.deb
sha256sums = 652be4e29e85ed31d3a1bae4dad00e6d39967ad0cf7cc47547b0ec94bacd0d51
pkgname = vacuumtube-bin
+27
View File
@@ -0,0 +1,27 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=vacuumtube-bin
pkgver=1.8.1
pkgrel=1
pkgdesc="YouTube Leanback (TV UI) in Electron, with a built-in adblocker (upstream binary)"
arch=('x86_64')
url="https://github.com/shy1132/VacuumTube"
license=('MIT')
depends=('gtk3' 'nss' 'alsa-lib' 'libnotify' 'libxss' 'libxtst' 'xdg-utils'
'at-spi2-core' 'util-linux-libs' 'libsecret')
optdepends=('libappindicator-gtk3: tray icon support')
provides=('vacuumtube')
conflicts=('vacuumtube')
options=('!strip' '!debug')
source=("${pkgname}-${pkgver}.deb::https://github.com/shy1132/VacuumTube/releases/download/v${pkgver}/VacuumTube-amd64.deb")
noextract=("${pkgname}-${pkgver}.deb")
sha256sums=('652be4e29e85ed31d3a1bae4dad00e6d39967ad0cf7cc47547b0ec94bacd0d51')
package() {
bsdtar -xOf "$srcdir/${pkgname}-${pkgver}.deb" 'data.tar.*' \
| bsdtar -xpf - -C "$pkgdir" --exclude './usr/share/doc' ./opt ./usr
install -d "$pkgdir/usr/bin"
ln -s /opt/VacuumTube/vacuumtube "$pkgdir/usr/bin/vacuumtube"
}
+21
View File
@@ -0,0 +1,21 @@
# vacuumtube-bin - VacuumTube (https://github.com/shy1132/VacuumTube),
# YouTube Leanback (TV UI) wrapper, Electron.
#
# Upstream publishes a bundled .deb per release, so there is no
# build_artifact() here: on a new version only pkgver and the checksum are
# refreshed and the PKGBUILD repackages the deb directly.
UPSTREAM_REPO="shy1132/VacuumTube"
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# refresh_checksums <version> <pkgbuild-path>
refresh_checksums() {
local ver="$1" pkgbuild="$2"
local sha
sha="$(curl -sfL "https://github.com/$UPSTREAM_REPO/releases/download/v$ver/VacuumTube-amd64.deb" \
| sha256sum | cut -d' ' -f1)"
sed -i "s|^sha256sums=.*|sha256sums=('$sha')|" "$pkgbuild"
}
+30
View File
@@ -0,0 +1,30 @@
pkgbase = waydroid-helper-bin
pkgdesc = GUI application for Waydroid configuration and extension installation (prebuilt)
pkgver = 0.2.9
pkgrel = 1
url = https://github.com/ayasa520/waydroid-helper
arch = any
license = GPL-3.0-or-later
depends = python
depends = fakeroot
depends = python-bidict
depends = python-httpx
depends = python-gobject
depends = python-yaml
depends = python-pywayland
depends = python-cairo
depends = gtk4
depends = libadwaita
depends = python-aiofiles
depends = python-dbus
depends = android-tools
depends = vte4
depends = hicolor-icon-theme
optdepends = bindfs: shared folders support
optdepends = waydroid: the container this tool configures
provides = waydroid-helper
conflicts = waydroid-helper
source = waydroid-helper-bin-0.2.9-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/waydroid-helper-bin-0.2.9/waydroid-helper-bin-0.2.9.tar.zst
sha256sums = 8a02695c6a3f102d1fa2a0b6266bb1978874338eac5a33b3391ada3243c01e56
pkgname = waydroid-helper-bin
+25
View File
@@ -0,0 +1,25 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=waydroid-helper-bin
pkgver=0.2.9
pkgrel=1
pkgdesc="GUI application for Waydroid configuration and extension installation (prebuilt)"
arch=('any')
url="https://github.com/ayasa520/waydroid-helper"
license=('GPL-3.0-or-later')
depends=('python' 'fakeroot' 'python-bidict' 'python-httpx' 'python-gobject'
'python-yaml' 'python-pywayland' 'python-cairo' 'gtk4' 'libadwaita'
'python-aiofiles' 'python-dbus' 'android-tools' 'vte4'
'hicolor-icon-theme')
optdepends=('bindfs: shared folders support'
'waydroid: the container this tool configures')
provides=('waydroid-helper')
conflicts=('waydroid-helper')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('8a02695c6a3f102d1fa2a0b6266bb1978874338eac5a33b3391ada3243c01e56')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+39
View File
@@ -0,0 +1,39 @@
# waydroid-helper-bin - prebuilt package of https://github.com/ayasa520/waydroid-helper
# (GTK4 + LibAdwaita GUI for Waydroid configuration/extensions, Python).
#
# Upstream only ships AppImages, so build_artifact() builds the meson project
# from the release tarball.
UPSTREAM_REPO="ayasa520/waydroid-helper"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(meson ninja python python-setuptools glib2 glib2-devel gettext)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/waydroid-helper-$ver"
meson setup "$workdir/build" "$srctree" --prefix=/usr --buildtype=release
meson install -C "$workdir/build" --destdir "$destdir"
# These caches are generated by pacman hooks; shipping them would cause
# file conflicts on install.
rm -f "$destdir/usr/share/glib-2.0/schemas/gschemas.compiled" \
"$destdir/usr/share/applications/mimeinfo.cache" \
"$destdir/usr/share/icons/hicolor/icon-theme.cache"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+22
View File
@@ -0,0 +1,22 @@
pkgbase = wiiudownloader-bin
pkgdesc = Download encrypted Wii U files from Nintendo's official servers (prebuilt)
pkgver = 2.99
pkgrel = 1
url = https://github.com/Xpl0itU/WiiUDownloader
arch = x86_64
license = GPL-3.0-or-later
depends = glibc
depends = glib2
depends = hicolor-icon-theme
depends = libx11
depends = gtk3
depends = gdk-pixbuf2
depends = cairo
depends = pango
depends = fontconfig
provides = wiiudownloader
conflicts = wiiudownloader
source = wiiudownloader-bin-2.99-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/wiiudownloader-bin-2.99/wiiudownloader-bin-2.99.tar.zst
sha256sums = 1a43185b07869b8c25b71c3d43ddd829fd79af9d4cf6bfcfddb201f12cf8ff2e
pkgname = wiiudownloader-bin
+21
View File
@@ -0,0 +1,21 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=wiiudownloader-bin
pkgver=2.99
pkgrel=1
pkgdesc="Download encrypted Wii U files from Nintendo's official servers (prebuilt)"
arch=('x86_64')
url="https://github.com/Xpl0itU/WiiUDownloader"
license=('GPL-3.0-or-later')
depends=('glibc' 'glib2' 'hicolor-icon-theme' 'libx11' 'gtk3' 'gdk-pixbuf2'
'cairo' 'pango' 'fontconfig')
provides=('wiiudownloader')
conflicts=('wiiudownloader')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('1a43185b07869b8c25b71c3d43ddd829fd79af9d4cf6bfcfddb201f12cf8ff2e')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+55
View File
@@ -0,0 +1,55 @@
# wiiudownloader-bin - prebuilt package of https://github.com/Xpl0itU/WiiUDownloader
# (Go + GTK3 downloader for Wii U titles from Nintendo's official servers).
#
# Upstream only ships AppImages, so build_artifact() builds the Go binary
# from the release tarball (grabTitles.py generates the title database that
# is compiled in).
UPSTREAM_REPO="Xpl0itU/WiiUDownloader"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(go gtk3 python)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/v$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/WiiUDownloader-$ver"
(cd "$srctree" && python3 grabTitles.py)
(cd "$srctree/cmd/WiiUDownloader" && \
GOPATH="$workdir/gopath" \
GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw" \
go build -v -o "$destdir/wiiudownloader" .)
install -Dm755 "$destdir/wiiudownloader" "$destdir/usr/bin/wiiudownloader"
rm "$destdir/wiiudownloader"
install -Dm644 "$srctree/data/WiiUDownloader.png" \
"$destdir/usr/share/icons/hicolor/256x256/apps/wiiudownloader.png"
mkdir -p "$destdir/usr/share/applications"
cat > "$destdir/usr/share/applications/wiiudownloader.desktop" << 'EOF'
[Desktop Entry]
Type=Application
Name=WiiUDownloader
Comment=Download Wii U titles from Nintendo's official servers
Exec=wiiudownloader
Icon=wiiudownloader
Terminal=false
Categories=Utility;
EOF
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir"
}
+19
View File
@@ -0,0 +1,19 @@
pkgbase = zapzap-bin
pkgdesc = WhatsApp desktop client written in PyQt6 + PyQt6-WebEngine (prebuilt)
pkgver = 7.0.3
pkgrel = 1
url = https://github.com/rafatosta/zapzap
arch = any
license = GPL-3.0-or-later
depends = python
depends = python-pyqt6
depends = python-pyqt6-webengine
depends = python-dbus
depends = qt6-wayland
optdepends = hunspell: spell check
provides = zapzap
conflicts = zapzap
source = zapzap-bin-7.0.3-1.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/zapzap-bin-7.0.3/zapzap-bin-7.0.3.tar.zst
sha256sums = 73e5415a7de9b6e3d7d3f8760c23ad3fec901a48e714d964f54293845804e3c8
pkgname = zapzap-bin
+22
View File
@@ -0,0 +1,22 @@
# Maintainer: Felitendo
# This PKGBUILD is updated automatically:
# https://github.com/Felitendo/PKGBUILDS
pkgname=zapzap-bin
pkgver=7.0.3
pkgrel=1
pkgdesc="WhatsApp desktop client written in PyQt6 + PyQt6-WebEngine (prebuilt)"
arch=('any')
url="https://github.com/rafatosta/zapzap"
license=('GPL-3.0-or-later')
depends=('python' 'python-pyqt6' 'python-pyqt6-webengine' 'python-dbus'
'qt6-wayland')
optdepends=('hunspell: spell check')
provides=('zapzap')
conflicts=('zapzap')
source=("${pkgname}-${pkgver}-${pkgrel}.tar.zst::https://github.com/Felitendo/PKGBUILDS/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.zst")
sha256sums=('73e5415a7de9b6e3d7d3f8760c23ad3fec901a48e714d964f54293845804e3c8')
package() {
cp -a "$srcdir/usr" "$pkgdir/"
}
+65
View File
@@ -0,0 +1,65 @@
# zapzap-bin - prebuilt package of https://github.com/rafatosta/zapzap
# (WhatsApp desktop client written in PyQt6 + PyQt6-WebEngine).
#
# Upstream ships deb/AppImage bundles that vendor all of Qt; instead we build
# the (pure-Python) wheel and install it against the system PyQt6 packages,
# like the AUR source package does.
UPSTREAM_REPO="rafatosta/zapzap"
# Installed in CI (pacman) before build_artifact runs.
BUILD_DEPS=(python python-build python-installer python-setuptools python-wheel)
latest_version() {
gh api "repos/$UPSTREAM_REPO/releases/latest" --jq '.tag_name' | sed 's/^v//'
}
# build_artifact <version> <output-file>
build_artifact() {
local ver="$1" outfile="$2"
local workdir destdir srctree staging sitedir entry
workdir="$(mktemp -d)"
destdir="$(mktemp -d)"
staging="$(mktemp -d)"
curl -sfL "https://github.com/$UPSTREAM_REPO/archive/refs/tags/$ver.tar.gz" | tar -xz -C "$workdir"
srctree="$workdir/zapzap-$ver"
(cd "$srctree" && python -m build --wheel --no-isolation)
python -m installer --destdir="$staging" "$srctree"/dist/*.whl
# The wheel installs into site-packages, whose path changes with every
# Python minor bump and would silently break a prebuilt package. Relocate
# to a fixed dir and use our own launcher instead of the generated console
# script (entry point parsed from pyproject.toml).
sitedir="$(find "$staging/usr/lib" -maxdepth 2 -type d -name site-packages)"
[[ -d "$sitedir/zapzap" ]] || { echo "zapzap module not found in $sitedir" >&2; return 1; }
mkdir -p "$destdir/usr/lib/zapzap"
mv "$sitedir/zapzap" "$sitedir"/zapzap-*.dist-info "$destdir/usr/lib/zapzap/"
entry="$(python -c "import tomllib; print(tomllib.load(open('$srctree/pyproject.toml','rb'))['project']['scripts']['zapzap'])")"
mkdir -p "$destdir/usr/bin"
cat > "$destdir/usr/bin/zapzap" << EOF
#!/usr/bin/python3
import sys
sys.path.insert(0, "/usr/lib/zapzap")
from ${entry%%:*} import ${entry#*:}
sys.exit(${entry#*:}())
EOF
chmod 755 "$destdir/usr/bin/zapzap"
# Icon, desktop file and metainfo are not part of the wheel.
install -Dm644 "$srctree/share/icons/com.rtosta.zapzap.svg" \
"$destdir/usr/share/icons/hicolor/scalable/apps/com.rtosta.zapzap.svg"
install -Dm644 "$srctree/share/applications/com.rtosta.zapzap.desktop" \
"$destdir/usr/share/applications/com.rtosta.zapzap.desktop"
install -Dm644 "$srctree/share/metainfo/com.rtosta.zapzap.appdata.xml" \
"$destdir/usr/share/metainfo/com.rtosta.zapzap.appdata.xml"
tar --zstd --sort=name --owner=0 --group=0 --numeric-owner --mtime='@0' \
-cf "$outfile" -C "$destdir" usr
rm -rf "$workdir" "$destdir" "$staging"
}