diff options
author | Jaka Hudoklin <jakahudoklin@gmail.com> | 2015-01-24 22:54:03 +0100 |
---|---|---|
committer | Jaka Hudoklin <jakahudoklin@gmail.com> | 2015-01-24 23:28:41 +0100 |
commit | 628c84c831b6a66cb286e8a82012a31a44ff10b8 (patch) | |
tree | d4e4e5edab068e5bdb47916350731fc6e6929114 /pkgs/top-level/node-packages.nix | |
parent | a00131bb321fe589a0d06756046b233e97bc0329 (diff) | |
download | nixlib-628c84c831b6a66cb286e8a82012a31a44ff10b8.tar nixlib-628c84c831b6a66cb286e8a82012a31a44ff10b8.tar.gz nixlib-628c84c831b6a66cb286e8a82012a31a44ff10b8.tar.bz2 nixlib-628c84c831b6a66cb286e8a82012a31a44ff10b8.tar.lz nixlib-628c84c831b6a66cb286e8a82012a31a44ff10b8.tar.xz nixlib-628c84c831b6a66cb286e8a82012a31a44ff10b8.tar.zst nixlib-628c84c831b6a66cb286e8a82012a31a44ff10b8.zip |
nodePackages: refactor, add support for overrides
Diffstat (limited to 'pkgs/top-level/node-packages.nix')
-rw-r--r-- | pkgs/top-level/node-packages.nix | 67 |
1 files changed, 50 insertions, 17 deletions
diff --git a/pkgs/top-level/node-packages.nix b/pkgs/top-level/node-packages.nix index 9127dfbbb435..e8f0a9997c98 100644 --- a/pkgs/top-level/node-packages.nix +++ b/pkgs/top-level/node-packages.nix @@ -1,23 +1,56 @@ -{ pkgs, stdenv, nodejs, fetchurl, fetchgit, neededNatives, self, generated ? ./node-packages-generated.nix }: +{ + stdenv, pkgs, nodejs + + # Self-reference +, self + + # Needed natives for installation +, neededNatives ? [pkgs.python] ++ stdenv.lib.optionals stdenv.isLinux [ pkgs.utillinux ] + + # Attribute set of generated packages +, generated ? pkgs.callPackage ./node-packages-generated.nix { inherit self; } + + # Attribute set of overrides +, overrides ? {} +, ... +} @ args: + +with stdenv.lib; rec { - nativeDeps = { - "node-expat" = [ pkgs.expat ]; - "node-stringprep" = [ pkgs.icu pkgs.which ]; - "rbytes" = [ pkgs.openssl ]; - "phantomjs" = [ pkgs.phantomjs ]; - "node-protobuf" = [ pkgs.protobuf ]; - }; - - buildNodePackage = import ../development/web/nodejs/build-node-package.nix { - inherit stdenv nodejs neededNatives; - inherit (pkgs) runCommand; - }; + overrides = { + phantomjs.buildInputs = [ pkgs.phantomjs ]; + "node-expat".buildInputs = [ pkgs.expat ]; + "node-stringprep".buildInputs = [ pkgs.icu pkgs.which ]; + "node-protobuf".buildInputs = [ pkgs.protobuf ]; + "rbytes".buildInputs = [ pkgs.openssl ]; + } // args.overrides or {}; - patchSource = fn: srcAttrs: fn srcAttrs; + # Apply overrides and back compatiblity transformations + buildNodePackage = {...} @ args: + let + pkg = makeOverridable ( + pkgs.callPackage ../development/web/nodejs/build-node-package.nix { + inherit nodejs neededNatives; + } + ) (args // { + # Backwards compatibility + src = if isList args.src then head args.src else args.src; + pkgName = (builtins.parseDrvName args.name).name; + }); + + override = overrides.${args.name} or overrides.${pkg.pkgName} or {}; - # Backwards compat - patchLatest = patchSource fetchurl; + in pkg.override override; + + # Backwards compatibility + patchSource = fn: srcAttrs: fn srcAttrs; + patchLatest = patchSource pkgs.fetchurl; /* Put manual packages below here (ideally eventually managed by npm2nix */ -} // import generated { inherit self fetchurl fetchgit; inherit (pkgs) lib; } +} // ( + if isAttrs generated then generated + + # Backwards compatiblity + else pkgs.callPackage generated { inherit self; } +) |