diff --git a/pkgs/development/interpreters/ruby/fixes.nix b/pkgs/development/interpreters/ruby/fixes.nix index 5a2b105adce..0b8545090c5 100644 --- a/pkgs/development/interpreters/ruby/fixes.nix +++ b/pkgs/development/interpreters/ruby/fixes.nix @@ -18,7 +18,7 @@ # (to make gems behave if necessary). { lib, fetchurl, writeScript, ruby, libxml2, libxslt, python, stdenv, which -, libiconv, postgresql, v8_3_16_14, clang }: +, libiconv, postgresql, v8_3_16_14, clang, sqlite, zlib, imagemagick, pkgconfig}: let v8 = v8_3_16_14; diff --git a/pkgs/development/interpreters/ruby/gem.nix b/pkgs/development/interpreters/ruby/gem.nix index 85fa9d10cb5..a6b5dc51057 100644 --- a/pkgs/development/interpreters/ruby/gem.nix +++ b/pkgs/development/interpreters/ruby/gem.nix @@ -1,4 +1,4 @@ -{ ruby, fetchurl, rake, rubygemsFun, makeWrapper, lib, git }: +{ ruby, fetchurl, rubygemsFun, makeWrapper, lib, git }: { name , namePrefix ? "${ruby.name}" + "-" diff --git a/pkgs/development/interpreters/ruby/load-ruby-env.nix b/pkgs/development/interpreters/ruby/load-ruby-env.nix index b73a9df9f83..9e60e574b37 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'' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 515424a4068..3209a246f62 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4049,8 +4049,6 @@ let loadRubyEnv = callPackage ../development/interpreters/ruby/load-ruby-env.nix { }; - rake = ... # TODO - rubySqlite3 = callPackage ../development/ruby-modules/sqlite3 { }; rubygemsFun = ruby: builderDefsPackage (import ../development/interpreters/ruby/rubygems.nix) {