nuclear-player
The pnpm install runs on the project's own source from GitHub and is part of normal build process; installing dev dependencies like node-addon-api is expected for building, not a supply-chain risk.
Triggered rules
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 pnpm install runs on the project's own source from GitHub and is part of normal build process; installing dev dependencies like node-addon-api is expected for building, not a supply-chain risk.
1 higher static finding superseded - not the current verdict (shown for transparency)
npm_install_external
Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.
-
PKGBUILD:76
NODE_ENV=development pnpm add -D node-addon-api node-gyp
PKGBUILD
1 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
# Contributor: Mikel Pintado <mikelaitornube2010@gmail.com>
_appname=nuclear
pkgname="${_appname}-player"
_pkgname='Nuclear Player'
pkgver=1.47.1
_nodeversion=24
pkgrel=1
pkgdesc="Streaming music player that finds free music for you."
arch=('any')
url="https://nuclearplayer.com/"
_ghurl="https://github.com/nukeop/nuclear"
license=('AGPL-3.0-only')
depends=(
'webkit2gtk-4.1'
'libsoup3'
'gtk3'
'wavpack'
'gst-plugins-good'
)
makedepends=(
'pnpm'
'nvm'
'curl'
'rustup'
)
optdepends=(
'gst-plugins-bad: Additional media codec support'
'gst-plugins-ugly: Patented codec support'
'gst-libav: FFmpeg-based codec support'
)
source=("${pkgname}-${pkgver}.tar.gz::${_ghurl}/archive/refs/tags/player@${pkgver}.tar.gz")
sha256sums=('abcbadab8c46c3838e4d467332837c1b1114ff42d95f2549ed04622f109d6b8e')
_ensure_local_nvm() {
local NVM_DIR="${srcdir}/.nvm"
source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
nvm install "${_nodeversion}"
nvm use "${_nodeversion}"
}
_set_build_env() {
export HOME="${srcdir}/.electron-gyp"
export CARGO_HOME="${srcdir}/.cargo"
{
export PNPM_LINK_WORKSPACE_PACKAGES=true
export PNPM_FETCH_RETRY_MAXTIMEOUT=10000
export PNPM_CACHE_DIR="${srcdir}/.pnpm_cache"
export PNPM_STORE_DIR="${srcdir}/.pnpm_store"
export PNPM_VIRTUAL_STORE_DIR="${srcdir}/.pnpm_store"
export PNPM_SHAMEFULLY_HOIST=true
export PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH=80
export PNPM_NODE_LINKER=hoisted
export PNPM_NETWORK_CONCURRENCY=32
}
if [[ "$(curl -s ipinfo.io/country)" == *"CN"* ]]; then
{
export pnpm_config_registry="https://registry.npmmirror.com"
export npm_config_registry="https://registry.npmmirror.com"
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
}
fi
}
prepare() {
cd "${srcdir}/${pkgname}-${pkgver}"
_set_build_env
_ensure_local_nvm
sed -i -e "
s/Exec=nuclear-music-player/Exec=${pkgname}/g
s/Icon=com.nuclearplayer.Nuclear/Icon=${pkgname}/g
" packages/player/src-tauri/resources/com.nuclearplayer.Nuclear.desktop
sed -i "s/com.nuclearplayer.Nuclear/${pkgname}/g" packages/player/src-tauri/resources/com.nuclearplayer.Nuclear.metainfo.xml
sed -i -e "
s/\"active\"\: true\,/\"active\"\: false\,/g
s/${_appname}-music-player/${pkgname}/g
" packages/player/src-tauri/tauri.conf.json
NODE_ENV=development pnpm add -D node-addon-api node-gyp
NODE_ENV=development pnpm install --no-frozen-lockfile
rustup default stable
}
build() {
_set_build_env
_ensure_local_nvm
cd "${srcdir}/${pkgname}-${pkgver}/packages/model"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/website"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/i18n"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/themes"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/hifi"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/ui"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/plugin-sdk"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/storybook"
NODE_ENV=production pnpm run build
cd "${srcdir}/${pkgname}-${pkgver}/packages/player"
NODE_ENV=production pnpm run build
}
package() {
install -Dm755 "${srcdir}/${pkgname}-${pkgver}/packages/player/src-tauri/target/release/${pkgname}" -t "${pkgdir}/usr/bin"
install -Dm755 "${srcdir}/${pkgname}-${pkgver}/packages/player/src-tauri/resources/com.nuclearplayer.Nuclear.desktop" \
"${pkgdir}/usr/share/applications/${pkgname}.desktop"
install -Dm755 "${srcdir}/${pkgname}-${pkgver}/packages/player/src-tauri/resources/com.nuclearplayer.Nuclear.metainfo.xml" \
"${pkgdir}/usr/share/metainfo/${pkgname}.metainfo.xml"
install -Dm755 "${srcdir}/${pkgname}-${pkgver}/packages/player/src-tauri/icons/icon.png" \
"${pkgdir}/usr/share/pixmaps/${pkgname}.png"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 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 03:13:17 | Medium | 1 |
| 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 |