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,26 +21,45 @@
nodejs = pkgs.nodejs-18_x; nodejs = pkgs.nodejs-18_x;
node_modules = pkgs.stdenv.mkDerivation { src = filter {
name = "node_modules"; root = ./.;
include = [
./package.json
./package-lock.json
];
};
src = filter { # Read lockfile
root = ./.; packageLock = builtins.fromJSON(builtins.readFile (src + "/package-lock.json"));
include = [
./package.json # Convert to tarball dep list
./package-lock.json 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;
};
__noChroot = true; # build npm cache
ashenearth_modules = pkgs.stdenv.mkDerivation {
inherit src;
configurePhase = '' name = "node_modules";
export HOME=$TMP
'';
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