about summary refs log tree commit diff
path: root/pkgs/development/node-packages/node-env.nix
diff options
context:
space:
mode:
authorSander van der Burg <svanderburg@gmail.com>2018-06-28 23:26:44 +0200
committerSander van der Burg <svanderburg@gmail.com>2018-06-28 23:26:44 +0200
commit0068fea88cf6d9e1efe031753f9e48a424967ef8 (patch)
tree083283bdbaa0311b1691713461d0bbd51902d76a /pkgs/development/node-packages/node-env.nix
parent9849a3725c4e4b64f4aaac0b4eb344a50d1a3de4 (diff)
nodePackages: regenerate with node2nix 1.6.0
Diffstat (limited to 'pkgs/development/node-packages/node-env.nix')
-rw-r--r--pkgs/development/node-packages/node-env.nix81
1 files changed, 60 insertions, 21 deletions
diff --git a/pkgs/development/node-packages/node-env.nix b/pkgs/development/node-packages/node-env.nix
index fc118a788ea7f..720e0cc08503c 100644
--- a/pkgs/development/node-packages/node-env.nix
+++ b/pkgs/development/node-packages/node-env.nix
@@ -27,7 +27,7 @@ let
       buildInputs = [ nodejs ];
       buildPhase = ''
         export HOME=$TMPDIR
-        tgzFile=$(npm pack)
+        tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
       '';
       installPhase = ''
         mkdir -p $out/tarballs
@@ -309,31 +309,42 @@ let
   };
 
   # Builds and composes an NPM package including all its dependencies
-  buildNodePackage = { name, packageName, version, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, bypassCache ? false, preRebuild ? "", ... }@args:
+  buildNodePackage =
+    { name
+    , packageName
+    , version
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , preRebuild ? ""
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
 
     let
       forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" ];
     in
-    stdenv.lib.makeOverridable stdenv.mkDerivation (builtins.removeAttrs args [ "dependencies" ] // {
+    stdenv.mkDerivation ({
       name = "node-${name}-${version}";
       buildInputs = [ tarWrapper python nodejs ]
         ++ stdenv.lib.optional (stdenv.isLinux) utillinux
         ++ stdenv.lib.optional (stdenv.isDarwin) libtool
-        ++ args.buildInputs or [];
-      dontStrip = args.dontStrip or true; # Striping may fail a build for some package deployments
+        ++ buildInputs;
 
-      inherit dontNpmInstall preRebuild;
-
-      unpackPhase = args.unpackPhase or "true";
-
-      buildPhase = args.buildPhase or "true";
+      inherit dontStrip; # Stripping may fail a build for some package deployments
+      inherit dontNpmInstall preRebuild unpackPhase buildPhase;
 
       compositionScript = composePackage args;
       pinpointDependenciesScript = pinpointDependenciesOfPackage args;
 
       passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
 
-      installPhase = args.installPhase or ''
+      installPhase = ''
         # Create and enter a root node_modules/ folder
         mkdir -p $out/lib/node_modules
         cd $out/lib/node_modules
@@ -406,27 +417,47 @@ let
         # Run post install hook, if provided
         runHook postInstall
       '';
-    });
+    } // extraArgs);
 
   # Builds a development shell
-  buildNodeShell = { name, packageName, version, src, dependencies ? [], production ? true, npmFlags ? "", dontNpmInstall ? false, bypassCache ? false, ... }@args:
+  buildNodeShell =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
     let
       forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
 
-      nodeDependencies = stdenv.mkDerivation {
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
+
+      nodeDependencies = stdenv.mkDerivation ({
         name = "node-dependencies-${name}-${version}";
 
         buildInputs = [ tarWrapper python nodejs ]
           ++ stdenv.lib.optional (stdenv.isLinux) utillinux
           ++ stdenv.lib.optional (stdenv.isDarwin) libtool
-          ++ args.buildInputs or [];
+          ++ buildInputs;
+
+        inherit dontStrip; # Stripping may fail a build for some package deployments
+        inherit dontNpmInstall unpackPhase buildPhase;
 
         includeScript = includeDependencies { inherit dependencies; };
         pinpointDependenciesScript = pinpointDependenciesOfPackage args;
 
         passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
 
-        buildCommand = ''
+        installPhase = ''
           mkdir -p $out/${packageName}
           cd $out/${packageName}
 
@@ -438,13 +469,15 @@ let
           ${stdenv.lib.optionalString bypassCache ''
             if [ -f ${src}/package-lock.json ]
             then
-              cp ${src}/package-lock.json .
+                cp ${src}/package-lock.json .
             fi
           ''}
 
           # Pinpoint the versions of all dependencies to the ones that are actually being used
           echo "pinpointing versions of dependencies..."
           cd ..
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
           source $pinpointDependenciesScriptPath
           cd ${packageName}
 
@@ -474,15 +507,17 @@ let
           ''}
 
           cd ..
+          ${stdenv.lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
           mv ${packageName} lib
           ln -s $out/lib/node_modules/.bin $out/bin
         '';
-      };
+      } // extraArgs);
     in
-    stdenv.lib.makeOverridable stdenv.mkDerivation {
+    stdenv.mkDerivation {
       name = "node-shell-${name}-${version}";
 
-      buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ args.buildInputs or [];
+      buildInputs = [ python nodejs ] ++ stdenv.lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
       buildCommand = ''
         mkdir -p $out/bin
         cat > $out/bin/shell <<EOF
@@ -500,4 +535,8 @@ let
       '';
     };
 in
-{ inherit buildNodeSourceDist buildNodePackage buildNodeShell; }
+{
+  buildNodeSourceDist = stdenv.lib.makeOverridable buildNodeSourceDist;
+  buildNodePackage = stdenv.lib.makeOverridable buildNodePackage;
+  buildNodeShell = stdenv.lib.makeOverridable buildNodeShell;
+}