diff options
author | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2011-01-21 08:25:11 +0000 |
---|---|---|
committer | Yury G. Kudryashov <urkud.urkud@gmail.com> | 2011-01-21 08:25:11 +0000 |
commit | 08a1b617168dd5073492bf0959459bf51f0798f1 (patch) | |
tree | 4059b60a021d0991ddfaebc63a6ac5984f35c270 /pkgs/development/interpreters/ruby/libs.nix | |
parent | e76aee9d2f529848c60d2d91339074d46f395ebb (diff) | |
download | nixlib-08a1b617168dd5073492bf0959459bf51f0798f1.tar nixlib-08a1b617168dd5073492bf0959459bf51f0798f1.tar.gz nixlib-08a1b617168dd5073492bf0959459bf51f0798f1.tar.bz2 nixlib-08a1b617168dd5073492bf0959459bf51f0798f1.tar.lz nixlib-08a1b617168dd5073492bf0959459bf51f0798f1.tar.xz nixlib-08a1b617168dd5073492bf0959459bf51f0798f1.tar.zst nixlib-08a1b617168dd5073492bf0959459bf51f0798f1.zip |
Make it possible to override system ruby gems
svn path=/nixpkgs/trunk/; revision=25658
Diffstat (limited to 'pkgs/development/interpreters/ruby/libs.nix')
-rw-r--r-- | pkgs/development/interpreters/ruby/libs.nix | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/pkgs/development/interpreters/ruby/libs.nix b/pkgs/development/interpreters/ruby/libs.nix index 57daafaef408..d0b6401abc29 100644 --- a/pkgs/development/interpreters/ruby/libs.nix +++ b/pkgs/development/interpreters/ruby/libs.nix @@ -1,12 +1,33 @@ -{stdenv, config, fetchurl, callPackage}: +{stdenv, getConfig, fetchurl, callPackage}: let - generated = stdenv.lib.attrByPath [ "gems" "generated" ] (import ./generated.nix) config; - auto = generated merged; - patches = callPackage ./patches.nix { } gems; - overwrites = callPackage ./overwrites.nix { } gems; - merged = stdenv.lib.mapAttrs gem auto.gems; - gem = callPackage ./gem.nix { inherit patches overwrites; }; - gems = merged // auto.aliases; + inherit (stdenv.lib) fold optional; + gemsMergeableFun = { generatedFuns ? [], patchFuns ? [], overrideFuns ? [] }: + let + generatedAttrs = map (f: f customGems) generatedFuns; + generatedGems = map (a: a.gems) generatedAttrs; + gem = callPackage ./gem.nix { + patches = map (f: callPackage f { inherit gems; }) patchFuns; + overrides = map (f: callPackage f { }) overrideFuns; + }; + customGems = stdenv.lib.mapAttrs gem (fold (x: y: x // y) { } generatedGems); + gems = fold (x: y: x // y) customGems (map (a: a.aliases) generatedAttrs); + in + gems // { + merge = { generated ? null, patches ? null, overrides ? null }: + gemsMergeableFun { + generatedFuns = generatedFuns ++ optional (generated != null) generated; + patchFuns = patchFuns ++ optional (patches != null) patches; + overrideFuns = overrideFuns ++ optional (overrides != null) overrides; + }; + }; in -gems +((gemsMergeableFun { }).merge { + generated = import ./generated.nix; + patches = import ./patches.nix; + overrides = import ./overrides.nix; +}).merge { + generated = getConfig [ "gems" "generated" ] null; + patches = getConfig [ "gems" "patches" ] null; + overrides = getConfig [ "gems" "overrides" ] null; +} |