about summary refs log tree commit diff
path: root/pkgs/development/interpreters/ruby/load-ruby-env.nix
diff options
context:
space:
mode:
authorCharles Strahan <charles.c.strahan@gmail.com>2014-10-29 23:14:19 +0000
committerCharles Strahan <charles.c.strahan@gmail.com>2014-10-29 23:14:19 +0000
commit845fed122a5e7eba1c4c52f23de708d3e3d88e74 (patch)
tree1cfe8177283d9400e3095e37ca1d611e5b548f82 /pkgs/development/interpreters/ruby/load-ruby-env.nix
parentd5b3a6d50828a984ef71a2f43457625cf2310af0 (diff)
downloadnixlib-845fed122a5e7eba1c4c52f23de708d3e3d88e74.tar
nixlib-845fed122a5e7eba1c4c52f23de708d3e3d88e74.tar.gz
nixlib-845fed122a5e7eba1c4c52f23de708d3e3d88e74.tar.bz2
nixlib-845fed122a5e7eba1c4c52f23de708d3e3d88e74.tar.lz
nixlib-845fed122a5e7eba1c4c52f23de708d3e3d88e74.tar.xz
nixlib-845fed122a5e7eba1c4c52f23de708d3e3d88e74.tar.zst
nixlib-845fed122a5e7eba1c4c52f23de708d3e3d88e74.zip
various fixes
Diffstat (limited to 'pkgs/development/interpreters/ruby/load-ruby-env.nix')
-rw-r--r--pkgs/development/interpreters/ruby/load-ruby-env.nix24
1 files changed, 18 insertions, 6 deletions
diff --git a/pkgs/development/interpreters/ruby/load-ruby-env.nix b/pkgs/development/interpreters/ruby/load-ruby-env.nix
index b73a9df9f83b..9e60e574b378 100644
--- a/pkgs/development/interpreters/ruby/load-ruby-env.nix
+++ b/pkgs/development/interpreters/ruby/load-ruby-env.nix
@@ -1,4 +1,4 @@
-{ pkgs, lib, callPackage, gemFixes }:
+{ pkgs, lib, callPackage, gemFixes, fetchurl }:
 
 { gemset, ruby ? pkgs.ruby, fixes ? gemFixes }@args:
 
@@ -7,19 +7,31 @@ let
 
   buildRubyGem = callPackage ./gem.nix { inherit ruby; };
 
-  instantiate = (name: attrs:
+  fetchers.gem = attrs: fetchurl {
+    url = "${attrs.src.source or "https://rubygems.org"}/downloads/${attrs.name}-${attrs.version}.gem";
+    inherit (attrs.src) sha256;
+  };
+
+  instantiate = (attrs:
     let
       gemPath = map (name: gemset''."${name}") (attrs.dependencies or []);
-      fixedAttrs = attrs // (fixes."${name}" or (const {})) attrs;
+      fixedAttrs = attrs // (fixes."${attrs.name}" or (const {})) attrs;
     in
-      buildRubyGem (fixedAttrs // { name = "${name}-${attrs.version}"; inherit gemPath; })
+      buildRubyGem (
+        fixedAttrs // {
+          name = "${attrs.name}-${attrs.version}";
+          src = fetchers."${attrs.src.type}" attrs;
+          inherit gemPath;
+        }
+      )
   );
 
   gemset' = if builtins.isAttrs gemset then gemset else callPackage gemset { };
 
   gemset'' = lib.flip lib.mapAttrs gemset' (name: attrs:
-    if (lib.isDerivation attrs) then attrs
-    else (instantiate name attrs)
+    if (lib.isDerivation attrs)
+      then attrs
+      else instantiate (attrs // { inherit name; })
   );
 
 in gemset''