🐰 xiaoxiangmoe | If I don't add this, this will be a error
error: builder for '/nix/store/zx1dn11h7apcz6ykph7pf7q8as0r6crh-code-oss-1.104.0.drv' failed with exit code 1;
last 25 log lines:
> npm error gid, gids, uid, umask,
> npm error ^^^^^^^^^^^^^^^^^^^^^^
> npm error start_new_session, process_group)
> npm error ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> npm error File "/nix/store/i8r431v9g2hwh9g0kkp2lrgd426szgnq-python3-3.13.7/lib/python3.13/subprocess.py", line 1972, in _execute_child
> npm error raise child_exception_type(errno_num, err_msg, err_filename)
> npm error FileNotFoundError: [Errno 2] No such file or directory: 'gcc' | 14:03:47 |
🐰 xiaoxiangmoe | {
lib,
stdenv,
stdenvNoCC,
fetchFromGitHub,
makeWrapper,
nodejs_22,
prefetch-npm-deps,
mkElectron,
writableTmpDirAsHomeHook,
pkg-config,
krb5,
libtool,
cctools,
node-gyp,
writeShellScriptBin,
bash,
ripgrep,
gcc,
clang_17,
which,
runCommand,
apple-sdk_14,
apple-sdk_15,
srcOnly,
llvmPackages_17,
}:
let
llvmPackages = llvmPackages_17;
clang = llvmPackages.clang;
nodejs = nodejs_22;
electronInfo =builtins.fromJSON ''
{
"hashes": {
"aarch64-darwin": "7f390efeca2d2153e29c5ea13305915fb3f853b2a4e9a00be07183c6e09ac6de",
"aarch64-linux": "c5c8ec46d9e291cd9dddb40c635d947d0f17873739f93b069e75b4bdadd75f5d",
"armv7l-linux": "0871625623efb0edbb4d93ec9e036e01837f9d9ffaf4f1c05ae95f30ff823987",
"headers": "1a5wfjjf68mcbsq2lxxsrhgni5ia4dcv1pfzmgw3wm10gbyb0wzi",
"x86_64-darwin": "0a6a55de6c49d6eb929f01632701bd25f7e515d7b4042614dd5a1ec6c079f3f3",
"x86_64-linux": "9c379b91f7ff65311f2b040299ee95c137fcb8e7e1bef87f9225d608cf579548"
},
"version": "37.3.1"
}
'';
electron = mkElectron electronInfo.version electronInfo.hashes;
ripgrep-zip = runCommand "ripgrep-zip" { } ''
tar -czf $out -C ${ripgrep}/bin rg
'';
node-gyp-dir="Library/Caches/node-gyp/";
in
stdenv.mkDerivation (finalAttrs: {
pname = "code-oss";
version = "1.104.0";
src = fetchFromGitHub {
owner = "microsoft";
repo = "vscode";
tag = finalAttrs.version;
hash = "sha256-ojx1VladX3c3jqIIdVtxmotlysJg6a0rbTuHdP8957I=";
};
patches = [
./node-gyp.patch
];
npmDeps = stdenvNoCC.mkDerivation {
name = "code-oss-${finalAttrs.version}-npm-deps";
inherit (finalAttrs) src patches;
nativeBuildInputs = [ prefetch-npm-deps ];
buildPhase = ''
FORCE_EMPTY_CACHE=true FORCE_GIT_DEPS=true find . -name package-lock.json -exec sh -c 'echo prefetch-npm-deps {} \$out && prefetch-npm-deps {} $out' \;
rm $out/package-lock.json
'';
outputHashMode = "recursive";
outputHash = "sha256-9e75w2BgLEuV4uvevJSEyPrjoT3V9UwjUkhsGP+mu+o=";
};
nativeBuildInputs = [
writableTmpDirAsHomeHook
nodejs
nodejs.python
krb5
node-gyp
pkg-config
which
]
++ lib.optionals stdenv.isDarwin [
llvmPackages.clang
llvmPackages.libcxx
llvmPackages.libclang
cctools
cctools.libtool
];
postPatch = ''
cp -r "$npmDeps" "$TMPDIR/cache"
chmod -R 700 "$TMPDIR/cache"
cachePath="$TMPDIR/cache"
export npm_config_cache="$cachePath"
export npm_config_offline="true"
export npm_config_progress="false"
# export npm_config_loglevel=verbose
# export npm_config_verbose=true
mkdir -p "$HOME/${node-gyp-dir}/${electron.version}"
echo 11 > "$HOME/${node-gyp-dir}/${electron.version}/installVersion"
ln -s "${electron.headers}/include" "$HOME/${node-gyp-dir}/${electron.version}/include"
mkdir -p "$HOME/${node-gyp-dir}/${nodejs.version}"
echo 11 > "$HOME/${node-gyp-dir}/${nodejs.version}/installVersion"
ln -s "${nodejs}/include" "$HOME/${node-gyp-dir}/${nodejs.version}/include"
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
cat .npmrc
'';
configurePhase = ''
runHook preConfigure
export NPX_NO_INSTALL=1
npm ci --offline --ignore-scripts
mkdir node_modules/@vscode/ripgrep/bin
mkdir $TMPDIR/vscode-ripgrep-cache-1.15.14
ln -s ${ripgrep-zip} $TMPDIR/vscode-ripgrep-cache-1.15.14/ripgrep-v13.0.0-13-aarch64-apple-darwin.tar.gz
npm ci
runHook postConfigure
'';
})
| 14:06:41 |