eden-opt
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:29
source_x86_64=("${_appimage}-x86_64::https://stable.eden-emu.dev/v${_pkgver}/Eden-Linux-v${_pkgver}-steamdeck-clang-pgo.AppImage")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 75%): The PKGBUILD downloads prebuilt AppImages from stable.eden-emu.dev, which is the official distribution host for the Eden Nintendo Switch emulator project (matching the upstream git URL at git.eden-emu.dev). The AppImage is extracted and its binaries are installed directly to /opt/eden/bin/ and /usr/bin/. While this is a legitimate official project host rather than a random personal server, the pattern of installing prebuilt binaries (not built from source) still constitutes a real supply-chain concern: if stable.eden-emu.dev were compromised, users would execute arbitrary code. The checksums (sha256 + b2) are pinned per-architecture, which mitigates substitution attacks somewhat. The host appears to be the project's own release infrastructure, making this more of a 'binary package from upstream' pattern common in AUR (similar to -bin packages), but the medium rating is still appropriate because the binaries are executed/installed without source verification. This is a legitimate medium-risk pattern, not a false positive.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Rongbo Wu <wurongbo2012@hotmail.com>
_pkgname=eden
_pkgver=0.2.1
pkgname="eden-opt"
pkgver=${_pkgver//-/.}
pkgrel=1.1
pkgdesc="The Eden Nintendo Switch emulator Clang PGO version (for Zen2 +)."
arch=('x86_64' 'aarch64')
url="https://git.eden-emu.dev/eden-emu/eden"
license=('GPL-3.0-only')
depends=('enet'
'qt6-base'
'qt6-charts'
'opus'
'spirv-tools'
'libfmt.so=12-64'
'libusb'
'libva'
)
makedepends=(patchelf)
optdepends=(
'shared-mime-info'
'libsm'
)
options=(!strip)
_appimage="${_pkgname}-${pkgver}"
source=("${url}/raw/branch/master/dist/dev.eden_emu.eden.xml")
source_x86_64=("${_appimage}-x86_64::https://stable.eden-emu.dev/v${_pkgver}/Eden-Linux-v${_pkgver}-steamdeck-clang-pgo.AppImage")
source_aarch64=("${_appimage}-aarch64::https://stable.eden-emu.dev/v${_pkgver}/Eden-Linux-v${_pkgver}-aarch64-clang-pgo.AppImage")
b2sums=('93ff8f217b74b140b27aba5c740e945bef37b5528ce865a4c83de7a0cbebc133d923633a7ef93fb24a696caa4003d55315f54a8ebfcd246dd4eebd306e7c7943'
)
sha256sums_x86_64=('5cc5b358ac6449b40021b20ba2430b4d12302737db15c8cbe5b46ce9aab85ce5')
sha256sums_aarch64=('b64f926cbf74fd870a39b144971084323d895d51919b91e906328e7f81bea087')
prepare() {
chmod +x "${_appimage}-$CARCH"
./"${_appimage}-$CARCH" --appimage-extract
# icon name
sed -i "s|org.eden_emu.eden|dev.eden_emu.eden|" dev.eden_emu.eden.xml
}
# Fix .desktop file executable
build() {
sed -i \
-e "s|^Exec=.*|Exec=/opt/${_pkgname}/bin/eden %f|" \
-e "s|^TryExec=.*||" \
-e "s|^Name=.*|Name=Eden Opt|" \
squashfs-root/dev.eden_emu.eden.desktop
patchelf --set-rpath /opt/${_pkgname}/lib squashfs-root/shared/bin/eden*
}
package() {
# file associations
install -Dm644 dev.eden_emu.eden.xml "${pkgdir}/usr/share/mime/packages/dev.eden_emu.eden.xml"
install -Dm755 squashfs-root/shared/bin/eden ${pkgdir}/opt/${_pkgname}/bin/eden
install -Dm755 squashfs-root/shared/bin/eden-cli ${pkgdir}/usr/bin/eden-cli
install -D squashfs-root/dev.eden_emu.eden.desktop \
"${pkgdir}/usr/share/applications/${pkgname}.desktop"
install -Dm644 squashfs-root/dev.eden_emu.eden.svg \
"${pkgdir}/usr/share/icons/hicolor/scalable/apps/dev.eden_emu.eden.svg"
install -d ${pkgdir}/opt/${_pkgname}/lib
cp -a squashfs-root/shared/lib/libboost* ${pkgdir}/opt/${_pkgname}/lib/
}
# Update mime database for file associations
post_install() {
update-mime-database /usr/share/mime
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 2 |
| 2026-08-02 00:16:08 | MEDIUM | 2 |
| 2026-08-01 00:11:18 | MEDIUM | 2 |
| 2026-07-31 00:14:10 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | MEDIUM | 2 |
| 2026-07-29 00:25:53 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | MEDIUM | 2 |
| 2026-07-27 00:24:32 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | MEDIUM | 2 |
| 2026-07-25 00:13:44 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | MEDIUM | 2 |
| 2026-07-23 00:14:47 | MEDIUM | 2 |
| 2026-07-22 00:29:32 | MEDIUM | 2 |
| 2026-07-21 00:24:15 | MEDIUM | 2 |
| 2026-07-20 00:19:49 | MEDIUM | 2 |
| 2026-07-19 00:17:08 | MEDIUM | 2 |
| 2026-07-18 00:14:48 | MEDIUM | 2 |
| 2026-07-17 00:06:16 | MEDIUM | 2 |
| 2026-07-16 00:05:41 | MEDIUM | 2 |
| 2026-07-15 00:09:25 | MEDIUM | 2 |