diff options
-rw-r--r-- | modules/pkgs/nodejs/default.nix | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/modules/pkgs/nodejs/default.nix b/modules/pkgs/nodejs/default.nix new file mode 100644 index 0000000..a21aaea --- /dev/null +++ b/modules/pkgs/nodejs/default.nix @@ -0,0 +1,57 @@ +{ fetchurl, http-parser, libuv, openssl, python, stdenv, + utillinux, v8, which, zlib }: + +let + + deps = { + inherit openssl zlib libuv http-parser; + }; + + sharedConfigureFlags = name: [ + "--shared-${name}" + "--shared-${name}-includes=${builtins.getAttr name deps}/include" + "--shared-${name}-libpath=${builtins.getAttr name deps}/lib" + ]; + + inherit (stdenv.lib) concatMap licenses ; + +in stdenv.mkDerivation rec { + + version = "6.9.1"; + name = "nodejs-${version}"; + + src = fetchurl { + url = "https://nodejs.org/download/release/v${version}/node-v${version}.tar.xz"; + sha256 = "0a87vzb33xdg8w0xi3c605hfav3c9m4ylab1436whz3p0l9qvp8b"; + }; + + configureFlags = concatMap sharedConfigureFlags (builtins.attrNames deps) ++ [ "--without-dtrace" ]; + dontDisableStatic = true; + + postInstall = '' + PATH=$out/bin:$PATH patchShebangs $out + ''; + + buildInputs = + [ http-parser libuv openssl python utillinux which + zlib ]; + + setupHook = builtins.toFile "nodejs-setup-hook" '' + addNodePath () { + addToSearchPath NODE_PATH $1/lib/node_modules + } + + envHooks+=(addNodePath) + ''; + + enableParallelBuilding = true; + + passthru.interpreterName = "nodejs"; + + meta = { + description = "Event-driven I/O framework for the V8 JavaScript engine"; + homepage = http://nodejs.org; + license = licenses.mit; + }; +} + |