summary refs log tree commit diff
diff options
context:
space:
mode:
authorJustin Wood <justin.k.wood@gmail.com>2017-06-23 12:38:10 -0400
committerJustin Wood <justin.k.wood@gmail.com>2017-06-26 23:13:58 -0400
commit3595f8e8d69e10b4989052e52ba4f08ce30857d2 (patch)
treea42f13cf949398acc5ab437cef86ba6dacbdc9ea
parent838956b179f786eb27a0d21eeddd5909f083ee29 (diff)
downloadnixlib-3595f8e8d69e10b4989052e52ba4f08ce30857d2.tar
nixlib-3595f8e8d69e10b4989052e52ba4f08ce30857d2.tar.gz
nixlib-3595f8e8d69e10b4989052e52ba4f08ce30857d2.tar.bz2
nixlib-3595f8e8d69e10b4989052e52ba4f08ce30857d2.tar.lz
nixlib-3595f8e8d69e10b4989052e52ba4f08ce30857d2.tar.xz
nixlib-3595f8e8d69e10b4989052e52ba4f08ce30857d2.tar.zst
nixlib-3595f8e8d69e10b4989052e52ba4f08ce30857d2.zip
Add in scope rebar version
-rw-r--r--pkgs/development/beam-modules/default.nix24
-rw-r--r--pkgs/development/beam-modules/lib.nix27
2 files changed, 33 insertions, 18 deletions
diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix
index d54520212a51..07cc2ebd94b7 100644
--- a/pkgs/development/beam-modules/default.nix
+++ b/pkgs/development/beam-modules/default.nix
@@ -39,21 +39,17 @@ let
         # BEAM-based languages.
         elixir = defaultScope.elixir-1_4;
 
-        elixir-1_4 = if versionAtLeast (lib.getVersion erlang) "18"
-                     then
-                       lib.callElixir ../interpreters/elixir/1.4.nix {
-                         debugInfo = true;
-                         erlang = erlang;
-                       }
-                     else throw "Elixir requires at least Erlang/OTP R18.";
+        elixir-1_4 = lib.callElixir ../interpreters/elixir/1.4.nix "18" {
+                       debugInfo = true;
+                       erlang = erlang;
+                       rebar = defaultScope.rebar;
+                     };
 
-        elixir-1_3 = if versionAtLeast (lib.getVersion erlang) "18"
-                     then
-                       lib.callElixir ../interpreters/elixir/1.3.nix {
-                         debugInfo = true;
-                         erlang = erlang;
-                       }
-                     else throw "Elixir requires at least Erlang/OTP R18.";
+        elixir-1_3 = lib.callElixir ../interpreters/elixir/1.3.nix "18" {
+                       debugInfo = true;
+                       erlang = erlang;
+                       rebar = defaultScope.rebar;
+                     };
 
         lfe = callPackage ../interpreters/lfe { };
 
diff --git a/pkgs/development/beam-modules/lib.nix b/pkgs/development/beam-modules/lib.nix
index 9d7a4bbd34ed..df0af4057637 100644
--- a/pkgs/development/beam-modules/lib.nix
+++ b/pkgs/development/beam-modules/lib.nix
@@ -43,12 +43,31 @@ rec {
         mkDerivation = pkgs.makeOverridable builder;
       };
 
-  callElixir = drv: args:
+  /* Uses generic-builder to evaluate provided drv containing Elixir version
+  specific data.
+
+  drv: package containing version-specific args;
+  vsn: minimum OTP version that Elixir will build on;
+  builder: generic builder for all Erlang versions;
+  args: arguments merged into version-specific args, used mostly to customize
+        dependencies;
+
+  Arguments passed to the generic-builder are overridable.
+
+  Please note that "mkDerivation" defined here is the one called from 1.4.nix
+  and similar files.
+  */
+  callElixir = drv: vsn: args:
     let
+      inherit (stdenv.lib) versionAtLeast;
       builder = callPackage ../../development/interpreters/elixir/generic-builder.nix args;
     in
-      callPackage drv {
-        mkDerivation = pkgs.makeOverridable builder;
-      };
+      if versionAtLeast (getVersion args.erlang) vsn
+      then
+        callPackage drv {
+          mkDerivation = pkgs.makeOverridable builder;
+        }
+      else
+        throw "Elixir requires at least Erlang/OTP R${vsn}.";
 
 }