nvm-desktop-git

LOW
maintainer zxp19821005 0 votes scanned 2026-09-17 00:27:14.276658
View on AUR
Why flagged

The package builds from source using project-owned repositories and installs only the resulting binaries; the use of cargo install for toml-cli is a build-time helper, not an external payload, and mirrors are used for availability, not untrusted code injection.

Triggered rules

Low AI review downgraded a static finding llm_review

The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package builds from source using project-owned repositories and installs only the resulting binaries; the use of cargo install for toml-cli is a build-time helper, not an external payload, and mirrors are used for availability, not untrusted code injection.

1 higher static finding superseded - not the current verdict (shown for transparency)
Medium External install via pipx/uv/poetry/cargo/go/gem alt_pkg_manager_install

A non-pip/npm package manager (pipx, uv, poetry, cargo install, go install, gem, conda…) fetches and builds an external package at build time, outside source=() and makepkg's checksums.

  • PKGBUILD:83 cargo install toml-cli

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
2pkgname=nvm-desktop-git
3_pkgname='NVM Desktop'
4pkgver=4.4.0.r0.g0eeff7a
5_nodeversion=24
6pkgrel=1
7pkgdesc="A version management desktop client for the Nodejs."
8arch=('any')
9url="https://github.com/1111mp/nvm-desktop"
10_nvmdurl="https://github.com/1111mp/nvmd-command"
11license=('MIT')
12conflicts=("${pkgname%-git}")
13provides=("${pkgname%-git}=${pkgver%.r*}")
14depends=(
15 'webkit2gtk-4.1'
16 'gtk3'
17)
18makedepends=(
19 'gendesk'
20 'npm'
21 'nvm'
22 'pnpm'
23 'curl'
24 'git'
25 'rust'
26 'librsvg'
27 'patchelf'
28)
29source=(
30 "${pkgname%-git}.git::git+${url}"
31 "nvmd.git::git+${_nvmdurl}"
32)
33sha256sums=('SKIP'
34 'SKIP')
35pkgver() {
36 cd "${srcdir}/${pkgname%-git}.git"
37 set -o pipefail
38 git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//g' ||
39 printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
40}
41_set_build_env() {
42 export HOME="${srcdir}/.electron-gyp"
43 export CARGO_HOME="${srcdir}/.cargo"
44 {
45 export PNPM_LINK_WORKSPACE_PACKAGES=true
46 export PNPM_FETCH_RETRY_MAXTIMEOUT=10000
47 export PNPM_CACHE_DIR="${srcdir}/.pnpm_cache"
48 export PNPM_STORE_DIR="${srcdir}/.pnpm_store"
49 export PNPM_VIRTUAL_STORE_DIR="${srcdir}/.pnpm_store"
50 export PNPM_SHAMEFULLY_HOIST=true
51 export PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH=80
52 export PNPM_NODE_LINKER=hoisted
53 export PNPM_NETWORK_CONCURRENCY=32
54 }
55 if [[ "$(curl -s ipinfo.io/country)" == *"CN"* ]]; then
56 {
57 export pnpm_config_registry="https://registry.npmmirror.com"
58 export npm_config_registry="https://registry.npmmirror.com"
59 export NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"
60 export RUSTUP_DIST_SERVER="https://mirrors.aliyun.com/rustup"
61 export RUSTUP_UPDATE_ROOT="https://mirrors.aliyun.com/rustup/rustup"
62 }
63 fi
64}
65_ensure_local_nvm() {
66 local NVM_DIR="${srcdir}/.nvm"
67 source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
68 nvm install "${_nodeversion}"
69 nvm use "${_nodeversion}"
70}
71prepare() {
72 gendesk -f -n -q \
73 --pkgname="${pkgname%-git}" \
74 --pkgdesc="${pkgdesc}" \
75 --categories="Development" \
76 --name="${pkgname%-git}" \
77 --exec="${pkgname%-git} %U"
78 _set_build_env
79 _ensure_local_nvm
80 rustup default stable
81 # build nvmd
82 cd "${srcdir}/nvmd.git"
83 cargo install toml-cli
84 cargo build --release
85 # build nvm-desktop
86 cd "${srcdir}/${pkgname%-git}.git"
87 install -Dm755 "${srcdir}/nvmd.git/target/release/nvmd" -t "${srcdir}/${pkgname%-git}.git/src-tauri/resources"
88 sed -i "s/\"active\"\: true\,/\"active\"\: false\,/g" src-tauri/tauri.conf.json
89 cp "src-tauri/icons/128x128@2x.png" "src-tauri/icons/256x256.png"
90 NODE_ENV=development pnpm install
91}
92build() {
93 cd "${srcdir}/${pkgname%-git}.git"
94 _set_build_env
95 _ensure_local_nvm
96 NODE_ENV=production pnpm run build
97}
98package() {
99 install -Dm755 "${srcdir}/${pkgname%-git}.git/src-tauri/target/release/${pkgname%-git}" -t "${pkgdir}/usr/bin"
100 install -Dm755 "${srcdir}/nvmd.git/target/release/nvmd" -t "${pkgdir}/usr/lib/${_pkgname//-/ }/resources"
101 install -Dm644 "${srcdir}/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications"
102 _icon_sizes=(32x32 64x64 128x128 256x256)
103 for _icons in "${_icon_sizes[@]}";do
104 install -Dm644 "${srcdir}/${pkgname%-git}.git/src-tauri/icons/${_icons}.png" \
105 "${pkgdir}/usr/share/icons/hicolor/${_icons}/apps/${pkgname%-git}.png"
106 done
107 install -Dm644 "${srcdir}/${pkgname%-git}.git/LICENSE" -t "${pkgdir}/usr/share/licenses/${pkgname}"
108}
109

Scan history

Scanned at (UTC)SeverityRules
2026-09-17 00:27:14 Low 2
2026-09-16 00:03:17 Low 2
2026-09-15 00:25:31 Low 2
2026-09-14 00:27:57 Low 2
2026-09-13 00:19:54 Low 2
2026-09-12 00:25:17 Low 2
2026-09-11 00:19:22 Low 2
2026-09-10 00:22:44 Low 2
2026-09-09 00:04:09 Low 2
2026-09-08 00:18:08 Low 2
2026-09-07 00:30:15 Low 2
2026-09-06 00:17:06 Low 2
2026-09-05 00:16:27 Low 2
2026-09-04 00:03:13 Low 2
2026-09-03 00:15:47 Low 2
2026-09-02 00:02:31 Low 2
2026-09-01 00:11:19 Low 2
2026-08-31 00:19:57 Low 2
2026-08-30 00:04:14 Low 2
2026-08-29 00:29:17 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