From c516517656064e21404385b1dd3ca3856abaa013 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Wed, 25 Jul 2012 17:46:21 -0400 Subject: [PATCH] Add empty node-packages.nix using build-node-package.nix from npm2nix. buildNodePackage is a function to build npm packages. npm2nix (https://bitbucket.org/shlevy/npm2nix) can be used to generate subexpressions to go in node-packages.nix --- .../web/nodejs/build-node-package.nix | 35 +++++++++++++++++++ pkgs/top-level/node-packages.nix | 12 +++++++ 2 files changed, 47 insertions(+) create mode 100644 pkgs/development/web/nodejs/build-node-package.nix create mode 100644 pkgs/top-level/node-packages.nix diff --git a/pkgs/development/web/nodejs/build-node-package.nix b/pkgs/development/web/nodejs/build-node-package.nix new file mode 100644 index 00000000000..56941ddf27e --- /dev/null +++ b/pkgs/development/web/nodejs/build-node-package.nix @@ -0,0 +1,35 @@ +{ stdenv, nodejs }: + +args @ { src, deps, ... }: + +stdenv.mkDerivation ({ + unpackPhase = "true"; + + configurePhase = '' + runHook preConfigure + mkdir node_modules + ${stdenv.lib.concatStrings (map (dep: '' + ln -sv ${dep}/node_modules/${(builtins.parseDrvName dep.name).name} node_modules/ + '') deps)} + export HOME=$(pwd) + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + ${nodejs}/bin/npm --registry http://www.example.com install ${src} + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + mkdir $out + mv node_modules $out + 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@' + fi + runHook postInstall + ''; +} // args) diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix new file mode 100644 index 00000000000..ae9ddad09ef --- /dev/null +++ b/pkgs/top-level/node-packages.nix @@ -0,0 +1,12 @@ +{ pkgs, stdenv, nodejs }: + +let buildNodePackage = import ../development/web/nodejs/build-node-package.nix { + inherit stdenv nodejs; +}; in + +with pkgs; + +let self = { +}; + +in self