summary refs log tree commit diff
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2013-08-18 19:28:51 -0400
committerShea Levy <shea@shealevy.com>2013-08-18 19:28:51 -0400
commit67eb2c8ad3ceb472a6772683accdebeef4d27213 (patch)
treece13e755baffb0142217410a1a748802f5577b06
parentb0320f130a24de1efeeb1c24578818f925a8fb9e (diff)
downloadnixlib-67eb2c8ad3ceb472a6772683accdebeef4d27213.tar
nixlib-67eb2c8ad3ceb472a6772683accdebeef4d27213.tar.gz
nixlib-67eb2c8ad3ceb472a6772683accdebeef4d27213.tar.bz2
nixlib-67eb2c8ad3ceb472a6772683accdebeef4d27213.tar.lz
nixlib-67eb2c8ad3ceb472a6772683accdebeef4d27213.tar.xz
nixlib-67eb2c8ad3ceb472a6772683accdebeef4d27213.tar.zst
nixlib-67eb2c8ad3ceb472a6772683accdebeef4d27213.zip
Handle peerDependencies in nodePackages
Signed-off-by: Shea Levy <shea@shealevy.com>
-rw-r--r--pkgs/development/web/nodejs/build-node-package.nix24
-rw-r--r--pkgs/top-level/node-packages.nix1
2 files changed, 16 insertions, 9 deletions
diff --git a/pkgs/development/web/nodejs/build-node-package.nix b/pkgs/development/web/nodejs/build-node-package.nix
index 5c080ee315a8..fbee90020d39 100644
--- a/pkgs/development/web/nodejs/build-node-package.nix
+++ b/pkgs/development/web/nodejs/build-node-package.nix
@@ -1,6 +1,6 @@
 { stdenv, runCommand, nodejs, neededNatives}:
 
-args @ { name, src, deps ? [], flags ? [], ... }:
+args @ { name, src, deps ? [], peerDeps ? [], flags ? [], ... }:
 
 with stdenv.lib;
 
@@ -12,7 +12,7 @@ let
     mv *node* $out
   '';
 
-  requireName = (builtins.parseDrvName name).name;
+  requireName = name: (builtins.parseDrvName name).name;
 in
 stdenv.mkDerivation ({
   unpackPhase = "true";
@@ -21,8 +21,11 @@ stdenv.mkDerivation ({
     runHook preConfigure
     mkdir node_modules
     ${stdenv.lib.concatStrings (map (dep: ''
-      ln -sv ${dep}/lib/node_modules/${(builtins.parseDrvName dep.name).name} node_modules/
+      ln -sv ${dep}/lib/node_modules/${requireName dep.name} node_modules/
     '') deps)}
+    ${stdenv.lib.concatStrings (map (dep: ''
+      ln -sv ${dep}/lib/node_modules/${requireName dep.name} node_modules/
+    '') peerDeps)}
     export HOME=$(pwd)
     runHook postConfigure
   '';
@@ -36,10 +39,13 @@ stdenv.mkDerivation ({
   installPhase = ''
     runHook preInstall
     mkdir -p $out/lib/node_modules
-    mv node_modules/${requireName} $out/lib/node_modules
+    mv node_modules/${requireName name} $out/lib/node_modules
+    ${stdenv.lib.concatStrings (map (dep: ''
+      mv node_modules/${requireName dep.name} $out/lib/node_modules
+    '') peerDeps)}
     mv node_modules/.bin $out/lib/node_modules 2>/dev/null || true
-    rm -fR $out/lib/node_modules/${requireName}/node_modules
-    mv node_modules $out/lib/node_modules/${requireName}
+    rm -fR $out/lib/node_modules/${requireName name}/node_modules
+    mv node_modules $out/lib/node_modules/${requireName name}
     if [ -d "$out/lib/node_modules/.bin" ]; then
       ln -sv $out/lib/node_modules/.bin $out/bin
       node=`type -p node`
@@ -51,9 +57,9 @@ stdenv.mkDerivation ({
           -e 's@#!/.*/node@#!'"$node"'@' \
           -e 's@#!/.*/coffee@#!'"$coffee"'@'
     fi
-    if [ -e "$out/lib/node_modules/${requireName}/man" ]; then
+    if [ -e "$out/lib/node_modules/${requireName name}/man" ]; then
       mkdir $out/share
-      ln -sv $out/lib/node_modules/${requireName}/man $out/share/man
+      ln -sv $out/lib/node_modules/${requireName name}/man $out/share/man
     fi
     runHook postInstall
   '';
@@ -66,5 +72,5 @@ stdenv.mkDerivation ({
   propagatedNativeBuildInputs = (args.propagatedNativeBuildInputs or []) ++ [ nodejs ];
 
   # Make buildNodePackage useful with --run-env
-  nativeBuildInputs = (args.nativeBuildInputs or []) ++ deps ++ neededNatives;
+  nativeBuildInputs = (args.nativeBuildInputs or []) ++ deps ++ peerDeps ++ neededNatives;
 } )
diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix
index 5719967c4c5c..2b141cab7edb 100644
--- a/pkgs/top-level/node-packages.nix
+++ b/pkgs/top-level/node-packages.nix
@@ -34,6 +34,7 @@ let
                 sha256 = pkg.sha256 or "";
               };
               deps = map (dep: builtins.getAttr dep.spec (builtins.getAttr dep.name self.full)) pkg.dependencies;
+              peerDeps  = map (dep: builtins.getAttr dep.spec (builtins.getAttr dep.name self.full)) pkg.peerDependencies;
               buildInputs = nativeDepsList pkg;
             };
           } ];