build node_modules without breaking chroot

main
Ashelyn Rose 4 months ago
parent 513426bba5
commit ffcaf44af2
No known key found for this signature in database
GPG Key ID: D1980B8C6F349BC1

1
.gitignore vendored

@ -1,3 +1,4 @@
.next/ .next/
node_modules/ node_modules/
out/ out/
result

@ -21,9 +21,6 @@
nodejs = pkgs.nodejs-18_x; nodejs = pkgs.nodejs-18_x;
node_modules = pkgs.stdenv.mkDerivation {
name = "node_modules";
src = filter { src = filter {
root = ./.; root = ./.;
include = [ include = [
@ -32,15 +29,37 @@
]; ];
}; };
__noChroot = true; # Read lockfile
packageLock = builtins.fromJSON(builtins.readFile (src + "/package-lock.json"));
# Convert to tarball dep list
deps = builtins.attrValues (removeAttrs packageLock.packages [ "" ])
++ builtins.attrValues (removeAttrs (packageLock.dependencies or {} ) [ "" ])
;
tarballs = map (p: pkgs.fetchurl { url = p.resolved; hash = p.integrity; }) deps;
tarballsFile = pkgs.writeTextFile {
name = "tarballs";
text = builtins.concatStringsSep "\n" tarballs;
};
configurePhase = '' # build npm cache
export HOME=$TMP ashenearth_modules = pkgs.stdenv.mkDerivation {
''; inherit src;
name = "node_modules";
buildInputs = [ nodejs ]; buildInputs = [ nodejs ];
buildPhase = '' buildPhase = ''
export HOME=$PWD/.home
export npm_config_cache=$PWD/.npm
while read package
do
echo "caching $(echo $package | sed 's/\/nix\/store\/[^-]*-//')"
npm cache add "$package"
done <${tarballsFile}
${nodejs}/bin/npm ci ${nodejs}/bin/npm ci
''; '';
@ -70,7 +89,7 @@
''; '';
configurePhase = '' configurePhase = ''
ln -sf ${node_modules}/node_modules node_modules ln -sf ${ashenearth_modules}/node_modules node_modules
export HOME=$TMP export HOME=$TMP
''; '';

Loading…
Cancel
Save