gitify-git

maintainer xiota · 0 votes · scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged The PKGBUILD is a legitimate AUR package for the Gitify GitHub notification app. The flagged pattern (npm install -g pnpm) installs pnpm from the official npm registry, which is a well-known, audited package manager. This is sloppy packaging — pnpm should be in makedepends or installed via a proper AUR dependency — but it is not malicious. The rest of the build process is standard: cloning from the official GitHub repo, using nvm to manage Node.js versions, building with electron-builder against the system electron, and packaging the result. No obfuscated payloads, no exfiltration, no attacker-controlled hosts. The only real concern is the undeclared runtime dependency on pnpm fetched at build time, which is a packaging quality issue rather than a security risk.

Triggered rules

LOW AI review downgraded a static finding llm_review

The static rules flagged this HIGH, but an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed the full PKGBUILD and judged it LOW (confidence 85%): The PKGBUILD is a legitimate AUR package for the Gitify GitHub notification app. The flagged pattern (npm install -g pnpm) installs pnpm from the official npm registry, which is a well-known, audited package manager. This is sloppy packaging — pnpm should be in makedepends or installed via a proper AUR dependency — but it is not malicious. The rest of the build process is standard: cloning from the official GitHub repo, using nvm to manage Node.js versions, building with electron-builder against the system electron, and packaging the result. No obfuscated payloads, no exfiltration, no attacker-controlled hosts. The only real concern is the undeclared runtime dependency on pnpm fetched at build time, which is a packaging quality issue rather than a security risk.

1 higher static finding superseded - not the current verdict (shown for transparency)
HIGH npm/yarn/pnpm install of an undeclared external package npm_install_external

Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time.

  • PKGBUILD:81 npm install -g pnpm

PKGBUILD

1 offending line(s) highlighted
1# Maintainer:
2# Contributor: Brad Johnson <bradsk88@gmail.com>
3
4: ${_install_path:=usr/share}
5: ${_electron_version=}
6
7_pkgname="gitify"
8pkgname="$_pkgname-git"
9pkgver=6.17.0.r36.g75e2e19
10pkgrel=1
11pkgdesc="GitHub tray icon and notifications"
12url="https://github.com/gitify-app/gitify"
13license=('MIT')
14arch=("any")
15
16depends=(
17 "electron${_electron_version:-}"
18)
19makedepends=(
20 'git'
21 'libicns'
22 'nvm'
23)
24
25provides=("$_pkgname")
26conflicts=(
27 "$_pkgname"
28 'gitify-bin'
29)
30
31_pkgsrc="$_pkgname"
32source=("git+$url.git${_commit:+#commit=$_commit}")
33sha256sums=('SKIP')
34
35pkgver() {
36 cd "$_pkgsrc"
37 git describe --long --tags --abbrev=7 \
38 | sed -E 's/^[^0-9]*//;s/([^-]*-g)/r\1/;s/-/./g'
39}
40
41prepare() {
42 icns2png -x "$_pkgsrc/assets/images/app-icon.icns"
43 mv app-icon_512x512x32.png "$_pkgname.png"
44}
45
46_nvm_env() {
47 # avoid cluttering user home
48 export HOME="$srcdir/node-home"
49 export XDG_CACHE_HOME="$HOME/.cache"
50 export XDG_CONFIG_HOME="$HOME/.config"
51 export XDG_DATA_HOME="$HOME/.local/share"
52
53 export NVM_DIR="$srcdir/node-nvm"
54
55 export ELECTRON_SKIP_BINARY_DOWNLOAD=1
56
57 export NODE_ENV=production
58 _nodeversion=$(cat "$_pkgsrc/.nvmrc")
59
60 # set up nvm
61 source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
62 nvm install $_nodeversion
63 nvm use $_nodeversion
64}
65
66build() (
67 _nvm_env
68
69 local _electron_version=$(cat /usr/lib/electron${_electron_version:-}/version)
70 local _electron_builder_options=(
71 --linux dir
72 --publish never
73 -c.electronDist="/usr/lib/electron${_electron_version%%.*}"
74 -c.electronVersion="${_electron_version:?}"
75 )
76
77 sed -E -e 's#("electron"): "[^"]+",#\1: "'${_electron_version}'",#' \
78 -i "$_pkgsrc/package.json"
79
80 cd "$_pkgsrc"
81 npm install -g pnpm
82 NODE_ENV=development pnpm install --ignore-scripts
83
84 pnpm run build
85 pnpm -c exec "electron-builder ${_electron_builder_options[*]}"
86)
87
88package() {
89 local _electron_version=$(cat /usr/lib/electron${_electron_version:-}/version)
90 depends=("electron${_electron_version%%.*}")
91
92 mkdir -pm755 "$pkgdir/$_install_path/$_pkgname"
93 cp "$_pkgsrc/dist/linux-unpacked/resources"/* "$pkgdir/$_install_path/$_pkgname/"
94
95 install -Dm644 "$_pkgname.png" -t "$pkgdir/$_install_path/pixmaps/"
96
97 install -Dm644 "$_pkgsrc/LICENSE" -t "$pkgdir/$_install_path/licenses/$pkgname/"
98
99 install -Dm755 /dev/stdin "$pkgdir/$_install_path/applications/$_pkgname.desktop" << END
100[Desktop Entry]
101Type=Application
102Name=${_pkgname^}
103Comment=$pkgdesc
104Exec=$_pkgname %U
105Icon=$_pkgname
106Terminal=false
107StartupWMClass=${_pkgname^}
108Categories=Development;
109END
110
111 install -Dm755 /dev/stdin "$pkgdir/usr/bin/$_pkgname" << END
112#!/usr/bin/env bash
113
114name=$_pkgname
115flags_file="\${XDG_CONFIG_HOME:-\$HOME/.config}/\${name}-flags.conf"
116
117lines=()
118if [[ -f "\${flags_file}" ]]; then
119 mapfile -t lines < "\${flags_file}"
120fi
121
122flags=()
123for line in "\${lines[@]}"; do
124 if [[ ! "\${line}" =~ ^[[:space:]]*#.* ]] && [[ -n "\${line}" ]]; then
125 flags+=("\${line}")
126 fi
127done
128
129: \${ELECTRON_IS_DEV:=0}
130export ELECTRON_IS_DEV
131: \${ELECTRON_FORCE_IS_PACKAGED:=true}
132export ELECTRON_FORCE_IS_PACKAGED
133
134exec electron${_electron_version%%.*} "/$_install_path/\${name}/app.asar" "\${flags[@]}" "\$@"
135END
136}
137

Scan history

Scanned at (UTC)SeverityRules
2026-08-03 00:08:14 LOW 2
2026-08-02 00:16:08 LOW 2
2026-08-01 00:11:18 LOW 2
2026-07-31 00:14:10 LOW 2
2026-07-30 00:17:23 LOW 2
2026-07-29 00:25:53 LOW 2
2026-07-28 00:07:28 LOW 2
2026-07-27 00:24:32 LOW 2
2026-07-26 00:07:32 LOW 2
2026-07-25 00:13:44 LOW 2
2026-07-24 00:02:28 LOW 2
2026-07-23 00:14:47 LOW 2
2026-07-22 00:29:32 LOW 2
2026-07-21 00:24:15 LOW 2
2026-07-20 00:19:49 LOW 2
2026-07-19 00:17:08 LOW 2
2026-07-18 00:14:48 LOW 2
2026-07-17 00:06:16 LOW 2
2026-07-16 00:05:41 LOW 2
2026-07-15 00:09:25 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