|
|
@ -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
|
|
|
|
'';
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
|
|