buildNodePackages: Move /node_modules to /lib/node_modules to make nix profiles usable as an npm prefix

Signed-off-by: Shea Levy <shea@shealevy.com>
This commit is contained in:
Shea Levy
2013-07-27 13:23:35 -04:00
parent 595937318f
commit 93cdc526c3
@@ -21,7 +21,7 @@ stdenv.mkDerivation ({
runHook preConfigure runHook preConfigure
mkdir node_modules mkdir node_modules
${stdenv.lib.concatStrings (map (dep: '' ${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)} '') deps)}
export HOME=$(pwd) export HOME=$(pwd)
runHook postConfigure runHook postConfigure
@@ -35,25 +35,25 @@ stdenv.mkDerivation ({
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
mkdir -p $out/node_modules mkdir -p $out/lib/node_modules
mv node_modules/${requireName} $out/node_modules mv node_modules/${requireName} $out/lib/node_modules
mv node_modules/.bin $out/node_modules 2>/dev/null || true mv node_modules/.bin $out/lib/node_modules 2>/dev/null || true
rm -fR $out/node_modules/${requireName}/node_modules rm -fR $out/lib/node_modules/${requireName}/node_modules
mv node_modules $out/node_modules/${requireName} mv node_modules $out/lib/node_modules/${requireName}
if [ -d "$out/node_modules/.bin" ]; then if [ -d "$out/lib/node_modules/.bin" ]; then
ln -sv node_modules/.bin $out/bin ln -sv node_modules/.bin $out/bin
node=`type -p node` node=`type -p node`
coffee=`type -p coffee || true` coffee=`type -p coffee || true`
find -L $out/node_modules/.bin/* -type f -print0 | \ find -L $out/lib/node_modules/.bin/* -type f -print0 | \
xargs -0 sed --follow-symlinks -i \ xargs -0 sed --follow-symlinks -i \
-e 's@#!/usr/bin/env node@#!'"$node"'@' \ -e 's@#!/usr/bin/env node@#!'"$node"'@' \
-e 's@#!/usr/bin/env coffee@#!'"$coffee"'@' \ -e 's@#!/usr/bin/env coffee@#!'"$coffee"'@' \
-e 's@#!/.*/node@#!'"$node"'@' \ -e 's@#!/.*/node@#!'"$node"'@' \
-e 's@#!/.*/coffee@#!'"$coffee"'@' -e 's@#!/.*/coffee@#!'"$coffee"'@'
fi fi
if [ -e "$out/node_modules/${requireName}/man" ]; then if [ -e "$out/lib/node_modules/${requireName}/man" ]; then
mkdir $out/share mkdir $out/share
ln -sv node_modules/${requireName}/man $out/share/man ln -sv $out/lib/node_modules/${requireName}/man $out/share/man
fi fi
runHook postInstall runHook postInstall
''; '';