summary refs log tree commit diff
path: root/pkgs/development/web/nodejs/build-node-package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/web/nodejs/build-node-package.nix')
-rw-r--r--pkgs/development/web/nodejs/build-node-package.nix29
1 files changed, 20 insertions, 9 deletions
diff --git a/pkgs/development/web/nodejs/build-node-package.nix b/pkgs/development/web/nodejs/build-node-package.nix
index d260b290016..5c080ee315a 100644
--- a/pkgs/development/web/nodejs/build-node-package.nix
+++ b/pkgs/development/web/nodejs/build-node-package.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation ({
     runHook preConfigure
     mkdir node_modules
     ${stdenv.lib.concatStrings (map (dep: ''
-      ln -sv ${dep}/node_modules/${(builtins.parseDrvName dep.name).name} node_modules/
+      ln -sv ${dep}/lib/node_modules/${(builtins.parseDrvName dep.name).name} node_modules/
     '') deps)}
     export HOME=$(pwd)
     runHook postConfigure
@@ -35,14 +35,25 @@ stdenv.mkDerivation ({
 
   installPhase = ''
     runHook preInstall
-    mkdir -p $out/node_modules
-    mv node_modules/${requireName} $out/node_modules
-    mv node_modules/.bin $out/node_modules 2>/dev/null || true
-    mv node_modules $out/node_modules/${requireName}
-    if [ -d "$out/node_modules/.bin" ]; then
-      ln -sv node_modules/.bin $out/bin
-      find -L $out/node_modules/.bin/* -type f -print0 | \
-        xargs -0 sed --follow-symlinks -i 's@#!/usr/bin/env node@#!${nodejs}/bin/node@'
+    mkdir -p $out/lib/node_modules
+    mv node_modules/${requireName} $out/lib/node_modules
+    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}
+    if [ -d "$out/lib/node_modules/.bin" ]; then
+      ln -sv $out/lib/node_modules/.bin $out/bin
+      node=`type -p node`
+      coffee=`type -p coffee || true`
+      find -L $out/lib/node_modules/.bin/* -type f -print0 | \
+        xargs -0 sed --follow-symlinks -i \
+          -e 's@#!/usr/bin/env node@#!'"$node"'@' \
+          -e 's@#!/usr/bin/env coffee@#!'"$coffee"'@' \
+          -e 's@#!/.*/node@#!'"$node"'@' \
+          -e 's@#!/.*/coffee@#!'"$coffee"'@'
+    fi
+    if [ -e "$out/lib/node_modules/${requireName}/man" ]; then
+      mkdir $out/share
+      ln -sv $out/lib/node_modules/${requireName}/man $out/share/man
     fi
     runHook postInstall
   '';