diff options
author | Charles Strahan <charles.c.strahan@gmail.com> | 2014-10-29 23:14:19 +0000 |
---|---|---|
committer | Charles Strahan <charles.c.strahan@gmail.com> | 2014-10-29 23:14:19 +0000 |
commit | 845fed122a5e7eba1c4c52f23de708d3e3d88e74 (patch) | |
tree | 1cfe8177283d9400e3095e37ca1d611e5b548f82 /pkgs/development/interpreters/ruby/load-ruby-env.nix | |
parent | d5b3a6d50828a984ef71a2f43457625cf2310af0 (diff) | |
download | nixlib-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.nix | 24 |
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'' |