vscodium-electron
The npm install occurs in a controlled build environment using the project's own source code and declared dependencies; it does not install arbitrary external packages or execute untrusted remote code.
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 90%): The npm install occurs in a controlled build environment using the project's own source code and declared dependencies; it does not install arbitrary external packages or execute untrusted remote code.
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:117
npm install --global node-gyp
PKGBUILD
1 offending line(s) highlighted# Maintainer: Richardn <rniu5 at jh dot edu>
# Contributor: HurricanePootis <hurricanepootis@protonmail.com>
# Contributor: Łukasz Mariański <lmarianski at protonmail dot com>
_pkgname=vscodium
_electron=electron42
_nodejs="24.18.0"
pkgname=${_pkgname}-electron
pkgver=1.143.17183
pkgrel=1
pkgdesc="VS Code without MS branding/telemetry/licensing. - System-wide Electron edition"
arch=('x86_64' 'aarch64' 'armv7h')
url="https://github.com/VSCodium/vscodium"
license=('MIT')
options=(!strip !debug)
depends=("$_electron" 'libsecret' 'libx11' 'libxkbfile' 'ripgrep' 'nodejs' 'python-fonttools' 'python' 'perl' 'webkit2gtk-4.1' 'util-linux-libs' 'glibc' 'dbus' 'gtk3' 'curl' 'libsoup3' 'openssl' 'glib2' 'libgcc' 'libstdc++' 'bash')
optdepends=(
'gvfs: For move to trash functionality'
'libdbusmenu-glib: For KDE global menu'
)
makedepends=('git' 'python' 'nvm' 'jq' 'cargo-nightly')
provides=(
'codium'
'vscodium'
)
conflicts=(
'codium'
'vscodium'
'vscodium-bin'
'vscodium-git'
)
source=(
"git+https://github.com/VSCodium/vscodium.git#tag=${pkgver}"
"vscodium-electron.patch"
"${_pkgname}.sh"
"${_pkgname}.js"
"${_pkgname}.desktop"
"${_pkgname}-uri-handler.desktop"
)
sha256sums=('e65d5fa055c12431df9c3fcfa8ae5c172a510421074800c9e9db367f19299adc'
'fafa705e51ed4d3044ab8fa2d7970efec8d0046883ebef1b86ebcef3394fa22d'
'617591ac74e2ef1ab30425895a79be5580db3280e7e44cee56a7a809637d438f'
'28a271ba5b2e50b11259abd794ad2ab083612c78bee2d617bb5a8702932c8f44'
'3a5bc109974fcf408855c13965f6d6be0997655c5b359de0bfd19a678c00844e'
'6eef345b65bf2679c928c763529540435ab9c6e1836917319810a7a2d484ae1b')
# Even though we don't officially support other archs, let's
# allow the user to use this PKGBUILD to compile the package
# for his architecture
case "$CARCH" in
i686)
_vscode_arch=ia32
;;
x86_64)
_vscode_arch=x64
;;
armv7h)
_vscode_arch=arm
;;
*)
# Needed for mksrcinfo
_vscode_arch=DUMMY
;;
esac
shopt -s extglob
_ensure_local_nvm() {
# let's be sure we are starting clean
which nvm >/dev/null 2>&1 && nvm deactivate && nvm unload
# Use non-hidden nvm folder
export NVM_DIR="${srcdir}/nvm"
# The init script returns 3 if version specified
# in ./.nvrc is not (yet) installed in $NVM_DIR
# but nvm itself still gets loaded ok
source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
}
prepare() {
# Abort early if the user does not have the selected electron version installed
if ! which $_electron; then
echo "Selected electron missing from system. Modify PKGBUILD and retry."
exit 1
fi
# Point to system electron in launcher scripts
# Do not use inplace sed so that user could change electron version in rebuilds
sed "s/@ELECTRON@/${_electron}/" "$srcdir/vscodium.sh" > "$srcdir/vscodium-electron.sh"
sed "s/@ELECTRON@/${_electron}/" "$srcdir/vscodium.js" > "$srcdir/vscodium-electron.js"
cd "$srcdir/vscodium"
# Remove old build
if [ -d vscode ]; then
rm -rf vscode VSCode*
fi
# Mangle original vscodium build script to build against system electron
patch -u build.sh -i $srcdir/vscodium-electron.patch
}
build() {
export SHOULD_BUILD="yes"
export SHOULD_BUILD_REH="no"
export CI_BUILD="no"
export OS_NAME="linux"
export VSCODE_ARCH="${_vscode_arch}"
export VSCODE_QUALITY="stable"
export RELEASE_VERSION="${pkgver}"
export DISABLE_UPDATE="yes"
export HOME="${srcdir}"
_ensure_local_nvm
nvm install "${_nodejs}"
nvm use "${_nodejs}"
npm install --global node-gyp
cd "$srcdir/vscodium"
# the app will be updated with pacman
export DISABLE_UPDATE="yes"
# https://github.com/nodejs/node/issues/51555
export DISABLE_V8_COMPILE_CACHE=1
rustup default stable
export CARGO_TARGET_DIR=${srcdir}/${_pkgname}/vscode/cli/target
. dev/build.sh
}
package() {
# Reference: https://aur.archlinux.org/packages/vscodium
install -d -m755 ${pkgdir}/usr/bin
install -d -m755 ${pkgdir}/usr/share/{applications,pixmaps}
install -d -m755 ${pkgdir}/usr/share/licenses/${_pkgname}
# vscodium-electron modification: put resource files and vscodium.js under /usr/lib/
install -dm755 "${pkgdir}/usr/lib/${_pkgname}"
# vscodium-electron modification: Only install licenses, files and shell completions under resources/
install -Dm644 "${srcdir}/${_pkgname}/VSCode-linux-${_vscode_arch}/resources/app/LICENSE.txt" -t "${pkgdir}/usr/share/licenses/${_pkgname}/"
install -Dm644 "${srcdir}/${_pkgname}/VSCode-linux-${_vscode_arch}/resources/app/ThirdPartyNotices.txt" -t "${pkgdir}/usr/share/licenses/${_pkgname}/"
cp -r --no-preserve=ownership --preserve=mode "${srcdir}/${_pkgname}"/VSCode-linux-${_vscode_arch}/resources/app/!(LICENSE.txt|ThirdPartyNotices.txt) "$pkgdir/usr/lib/${_pkgname}/"
cp -r --no-preserve=ownership --preserve=mode "${srcdir}/${_pkgname}"/VSCode-linux-${_vscode_arch}/resources/completions "$pkgdir/usr/lib/${_pkgname}/"
# vscodium-electron modification: Use custom launcher scripts
install -Dm755 "${srcdir}/vscodium-electron.sh" "${pkgdir}/usr/bin/${_pkgname}"
install -Dm755 "${srcdir}/vscodium-electron.js" "${pkgdir}/usr/lib/${_pkgname}/vscodium.js"
ln -s "/usr/bin/${_pkgname}" "${pkgdir}/usr/bin/codium"
# vscodium-electron modification: We handle Wayland at vscodium.sh level
install -D -m644 ${_pkgname}.desktop ${pkgdir}/usr/share/applications/${_pkgname}.desktop
install -D -m644 ${_pkgname}-uri-handler.desktop ${pkgdir}/usr/share/applications/${_pkgname}-uri-handler.desktop
install -D -m644 "${srcdir}/${_pkgname}/VSCode-linux-${_vscode_arch}/resources/app/resources/linux/code.png" ${pkgdir}/usr/share/pixmaps/${_pkgname}.png
# Symlink shell completions
install -d -m755 ${pkgdir}/usr/share/zsh/site-functions
install -d -m755 ${pkgdir}/usr/share/bash-completion/completions
# vscodium-electrion modification: Shell completion files changed locations
ln -s /usr/lib/${_pkgname}/completions/zsh/_codium ${pkgdir}/usr/share/zsh/site-functions
ln -s /usr/lib/${_pkgname}/completions/bash/codium ${pkgdir}/usr/share/bash-completion/completions
# vscodium-electron modification: Replace bundled ripgrep with system ripgrep
ln -sf /usr/bin/rg ${pkgdir}/usr/lib/$_pkgname/node_modules.asar.unpacked/@vscode/ripgrep-universal/bin/linux-${_vscode_arch}/rg
# Install license
install -Dm644 "$srcdir/${_pkgname}/LICENSE" "$pkgdir/usr/share/licenses/${pkgname}/LICENSE"
# Clean up sourcemaps
cd "$pkgdir/usr/lib/vscodium"
find . -type f -name *.map -exec rm {} \;
}
Changes since previous scan
--- PKGBUILD @ 2026-10-27 00:23+++ PKGBUILD @ 2026-11-01 00:21@@ -7,7 +7,7 @@ _nodejs="24.18.0" pkgname=${_pkgname}-electron-pkgver=1.140.06880+pkgver=1.143.17183 pkgrel=1 pkgdesc="VS Code without MS branding/telemetry/licensing. - System-wide Electron edition" arch=('x86_64' 'aarch64' 'armv7h')@@ -38,7 +38,7 @@ "${_pkgname}.desktop" "${_pkgname}-uri-handler.desktop" )-sha256sums=('179acfacb8b0704a49173be09cb98558e149fadda112db067d30f7fb7a547592'+sha256sums=('e65d5fa055c12431df9c3fcfa8ae5c172a510421074800c9e9db367f19299adc' 'fafa705e51ed4d3044ab8fa2d7970efec8d0046883ebef1b86ebcef3394fa22d' '617591ac74e2ef1ab30425895a79be5580db3280e7e44cee56a7a809637d438f' '28a271ba5b2e50b11259abd794ad2ab083612c78bee2d617bb5a8702932c8f44'Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 17:48:24 | Medium | 1 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 05:21:06 | Medium | 1 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |