gaze-gui-bin
The package downloads a prebuilt Arch package from a non-whitelisted, project-owned host (packages.gundulabs.com), which presents a supply-chain risk if the source were compromised or swapped, as the binary artifact is not built locally and its integrity relies solely on the checksum.
Triggered rules
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:19
source=("gaze-gui-0.4.2-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-gui-0.4.2-1-x86_64.pkg.tar.zst")
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 90%): The package downloads a prebuilt Arch package from a non-whitelisted, project-owned host (packages.gundulabs.com), which presents a supply-chain risk if the source were compromised or swapped, as the binary artifact is not built locally and its integrity relies solely on the checksum.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Gundu Labs <maintainers@gundulabs.com>
# Auto-generated by the packages publish script (build_aur_repo.sh). Do not edit manually.
pkgname=gaze-gui-bin
pkgver=0.4.2
pkgrel=1
pkgdesc="GTK4/Adwaita GUI for Gaze"
arch=('x86_64' )
url="https://gaze.gundulabs.com"
license=('GPL-3.0-or-later' )
depends=('gst-plugin-pipewire' 'gst-plugins-base' 'gst-plugins-good' 'gtk4' 'libadwaita' 'opencv<5.1' 'opencv>=5.0' )
optdepends=()
# This wrapper installs the same files under the same names as gaze-gui, so it has
# to claim that name. Without it an AUR helper treats any other package called
# gaze-gui as an upgrade candidate and silently replaces this one.
provides=('gaze-gui=0.4.2-1')
conflicts=('gaze-gui')
backup=()
# upstream package ships no install hooks
source=("gaze-gui-0.4.2-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-gui-0.4.2-1-x86_64.pkg.tar.zst")
sha256sums=('f87738098fb4514d5d799d9b907313e3250d255881204dace90b4718db595595')
package() {
bsdtar -xpf "$srcdir/gaze-gui-0.4.2-1-x86_64.pkg.tar.zst" -C "$pkgdir"
# .PKGINFO/.MTREE/.INSTALL are pacman's metadata for the inner package and must not
# land in $pkgdir. The hooks .INSTALL carries are re-declared through install= above,
# which is the only way makepkg runs them for a wrapper package.
find "$pkgdir" -maxdepth 1 -type f -name '.*' -delete
}
Changes since previous scan
--- PKGBUILD @ 2026-11-01 00:21+++ PKGBUILD @ 2026-11-01 14:00@@ -1,7 +1,7 @@ # Maintainer: Gundu Labs <maintainers@gundulabs.com> # Auto-generated by the packages publish script (build_aur_repo.sh). Do not edit manually. pkgname=gaze-gui-bin-pkgver=0.4.1+pkgver=0.4.2 pkgrel=1 pkgdesc="GTK4/Adwaita GUI for Gaze" arch=('x86_64' )@@ -12,15 +12,15 @@ # This wrapper installs the same files under the same names as gaze-gui, so it has # to claim that name. Without it an AUR helper treats any other package called # gaze-gui as an upgrade candidate and silently replaces this one.-provides=('gaze-gui=0.4.1-1')+provides=('gaze-gui=0.4.2-1') conflicts=('gaze-gui') backup=() # upstream package ships no install hooks-source=("gaze-gui-0.4.1-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-gui-0.4.1-1-x86_64.pkg.tar.zst")-sha256sums=('ff508b018612306428ca874549540d14236327982803755adeec9a6ffa3bd24c')+source=("gaze-gui-0.4.2-1-x86_64.pkg.tar.zst::https://packages.gundulabs.com/arch/packages/gaze-gui-0.4.2-1-x86_64.pkg.tar.zst")+sha256sums=('f87738098fb4514d5d799d9b907313e3250d255881204dace90b4718db595595') package() {- bsdtar -xpf "$srcdir/gaze-gui-0.4.1-1-x86_64.pkg.tar.zst" -C "$pkgdir"+ bsdtar -xpf "$srcdir/gaze-gui-0.4.2-1-x86_64.pkg.tar.zst" -C "$pkgdir" # .PKGINFO/.MTREE/.INSTALL are pacman's metadata for the inner package and must not # land in $pkgdir. The hooks .INSTALL carries are re-declared through install= above, # which is the only way makepkg runs them for a wrapper package.Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 14:00:44 | Medium | 2 |
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 11:44:54 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 01:41:32 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 00:12:50 | Medium | 2 |
| 2026-10-20 00:10:31 | Medium | 2 |
| 2026-10-19 00:03:55 | Medium | 2 |
| 2026-10-18 00:06:55 | Medium | 2 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |