nova-client-bin

LOW
maintainer Pakrohk 0 votes scanned 2026-11-02 20:03:06.122793
View on AUR
Why flagged

Package builds from a prebuilt binary release by the project's official GitHub, which is normal for Flutter/Go applications; the source is trustworthy and no remote code execution or malicious behavior is present.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Low AI review llm_review

An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is LOW (confidence 95%): Package builds from a prebuilt binary release by the project's official GitHub, which is normal for Flutter/Go applications; the source is trustworthy and no remote code execution or malicious behavior is present.

PKGBUILD

1# Maintainer: Pakrohk <https://github.com/pakrohk>
2
3pkgname=nova-client-bin
4_pkgname=nova-client
5_appid=online.novaproxy.nova_client
6# Use the distribution's Xray instead of the bundled copy. The bundled binary is
7# stock Xray-core and Nova only runs it for xhttp. Set to 0 to ship the bundled one.
8_system_xray=1
9pkgver=1.34.1
10pkgrel=1
11pkgdesc='Nova Client, a Flutter proxy/VPN client built on sing-box, Xray, Psiphon, MasterDNS and WARP'
12arch=('x86_64')
13url='https://github.com/IRNova/Nova-Client'
14# Nova itself: MIT. psiphon-linux-amd64: GPL-3.0 (license file ships in the tarball).
15# MasterDNS: MIT. The tarball ships no license file for sing-box or Xray; review before submitting.
16license=('MIT' 'GPL-3.0-only')
17# Everything the GUI links against comes from the Arch repos, and every library
18# it links directly is listed (namcap: "implicitly satisfied"). What stays
19# bundled has no Arch package or is tied to this exact build: the Flutter engine
20# and plugins, libaether, libcronet, the Nova fork of sing-box, psiphon, masterdns.
21depends=('glibc' 'libgcc' 'libstdc++'
22 'gtk3' 'glib2' 'cairo' 'pango' 'harfbuzz' 'fontconfig' 'libepoxy'
23 'at-spi2-core' 'gdk-pixbuf2' 'hicolor-icon-theme'
24 'libsecret'
25 'libayatana-appindicator' 'libayatana-indicator' 'ayatana-ido' 'libdbusmenu-glib')
26if (( _system_xray )); then
27 depends+=('xray')
28fi
29optdepends=('polkit: full-device (TUN) mode, started through pkexec'
30 'gnome-shell-extension-appindicator: system tray icon on GNOME')
31provides=("$_pkgname")
32conflicts=("$_pkgname")
33makedepends=('patchelf')
34# Prebuilt Go/Rust/Flutter binaries: automatic stripping stays off (it could break
35# the Dart snapshot); the few files that ship with symbols are stripped by hand.
36options=('!strip' '!debug')
37noextract=("$_pkgname-$pkgver.tar.gz")
38source=("$_pkgname-$pkgver.tar.gz::$url/releases/download/v$pkgver/Nova-Linux.tar.gz"
39 "$_pkgname-$pkgver-LICENSE::https://raw.githubusercontent.com/IRNova/Nova-Client/v$pkgver/LICENSE"
40 "$_appid.desktop")
41sha256sums=('8be86aee572020f669abe01abfcaa54df30de4acacf26ace85515fc6c9bbebc3'
42 'c99c6d75494458d52a049db0898c204eaa525346da1a8e13b260fb369f344ad0'
43 '0b2ccf4d89dcad6cd8fed4b0fcbae24975933449e6944a79f166601252dae890')
44
45package() {
46 # The app finds its cores and libaether.so next to its own executable and
47 # resolves everything relative to it, so the tree stays together in one
48 # private directory under /usr/lib.
49 install -dm755 "$pkgdir/usr/lib/$_pkgname"
50 bsdtar -xf "$srcdir/$_pkgname-$pkgver.tar.gz" -C "$pkgdir/usr/lib/$_pkgname" --no-same-owner
51
52 # Upstream CI leaked its build directory into the plugins' RUNPATH (namcap:
53 # "Insecure RUNPATH"). The plugins only need libflutter_linux_gtk.so, which
54 # sits next to them, so point RUNPATH at their own directory.
55 local f rpath
56 for f in "$pkgdir/usr/lib/$_pkgname"/lib/*.so; do
57 rpath=$(patchelf --print-rpath "$f") # fails loudly if patchelf is missing
58 case "$rpath" in
59 /home/*) patchelf --set-rpath '$ORIGIN' "$f" ;;
60 esac
61 done
62
63 # namcap: "unstripped" ELF files. Strip only what upstream shipped with
64 # symbols; libapp.so (Dart AOT snapshot) and the Flutter engine stay untouched.
65 strip --strip-unneeded \
66 "$pkgdir/usr/lib/$_pkgname"/lib/lib*_plugin.so \
67 "$pkgdir/usr/lib/$_pkgname/lib/libdartjni.so" \
68 "$pkgdir/usr/lib/$_pkgname/libcronet.so"
69 strip --strip-all "$pkgdir/usr/lib/$_pkgname/nova_client"
70
71 # The app looks for xray-linux-amd64 next to itself; point that name at the
72 # packaged Xray so it is updated through pacman.
73 if (( _system_xray )); then
74 ln -sf /usr/bin/xray "$pkgdir/usr/lib/$_pkgname/xray-linux-amd64"
75 fi
76
77 install -dm755 "$pkgdir/usr/bin"
78 ln -s "/usr/lib/$_pkgname/nova_client" "$pkgdir/usr/bin/$_pkgname"
79
80 # Desktop file is named after the GTK application id so Wayland compositors match it.
81 install -Dm644 "$srcdir/$_appid.desktop" "$pkgdir/usr/share/applications/$_appid.desktop"
82 install -Dm644 "$pkgdir/usr/lib/$_pkgname/data/flutter_assets/assets/brand/nova-logo-tile.svg" \
83 "$pkgdir/usr/share/icons/hicolor/scalable/apps/$_pkgname.svg"
84
85 install -Dm644 "$srcdir/$_pkgname-$pkgver-LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
86 install -Dm644 "$pkgdir/usr/lib/$_pkgname/LICENSE-psiphon.txt" "$pkgdir/usr/share/licenses/$pkgname/LICENSE-psiphon.txt"
87 install -Dm644 "$pkgdir/usr/lib/$_pkgname/LICENSE-masterdns.txt" "$pkgdir/usr/share/licenses/$pkgname/LICENSE-masterdns.txt"
88}
89

Scan history

Scanned at (UTC)SeverityRules
2026-11-02 20:03:06 Low 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion