diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 328a5d772db3..2c56949229bd 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -42,6 +42,7 @@ andrewrk = "Andrew Kelley "; andsild = "Anders Sildnes "; aneeshusa = "Aneesh Agrawal "; + ankhers = "Justin Wood "; antono = "Antono Vasiljev "; apeschar = "Albert Peschar "; apeyroux = "Alexandre Peyroux "; diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index d1a2a785a9c9..26cba333c23d 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -37,9 +37,16 @@ let buildMix = callPackage ./build-mix.nix {}; # BEAM-based languages. - elixir = if versionAtLeast (lib.getVersion erlang) "18" - then callPackage ../interpreters/elixir { debugInfo = true; } - else throw "Elixir requires at least Erlang/OTP R18."; + elixir = defaultScope.elixir-1_4; + + elixir-1_4 = if versionAtLeast (lib.getVersion erlang) "18" + then lib.callElixir ../interpreters/elixir/1.4.nix { debugInfo = true; } + else throw "Elixir requires at least Erlang/OTP R18."; + + elixir-1_3 = if versionAtLeast (lib.getVersion erlang) "18" + then lib.callElixir ../interpreters/elixir/1.3.nix { debugInfo = true; } + else throw "Elixir requires at least Erlang/OTP R18."; + lfe = callPackage ../interpreters/lfe { }; # Non hex packages diff --git a/pkgs/development/beam-modules/lib.nix b/pkgs/development/beam-modules/lib.nix index 009bfb4975b6..9d7a4bbd34ed 100644 --- a/pkgs/development/beam-modules/lib.nix +++ b/pkgs/development/beam-modules/lib.nix @@ -43,4 +43,12 @@ rec { mkDerivation = pkgs.makeOverridable builder; }; + callElixir = drv: args: + let + builder = callPackage ../../development/interpreters/elixir/generic-builder.nix args; + in + callPackage drv { + mkDerivation = pkgs.makeOverridable builder; + }; + } diff --git a/pkgs/development/interpreters/elixir/1.3.nix b/pkgs/development/interpreters/elixir/1.3.nix new file mode 100644 index 000000000000..90d81ee0120b --- /dev/null +++ b/pkgs/development/interpreters/elixir/1.3.nix @@ -0,0 +1,6 @@ +{ mkDerivation }: + +mkDerivation rec { + version = "1.3.4"; + sha256 = "01qqv1ghvfadcwcr5p88w8j217cgaf094pmpqllij3l0q1yg104l"; +} diff --git a/pkgs/development/interpreters/elixir/1.4.nix b/pkgs/development/interpreters/elixir/1.4.nix new file mode 100644 index 000000000000..2729c9942208 --- /dev/null +++ b/pkgs/development/interpreters/elixir/1.4.nix @@ -0,0 +1,6 @@ +{ mkDerivation }: + +mkDerivation rec { + version = "1.4.5"; + sha256 = "18ivcxmh5bak13k3rjy7jjzin57rgb2nffhwnqb2wl7bpi8mrarw"; +} diff --git a/pkgs/development/interpreters/elixir/default.nix b/pkgs/development/interpreters/elixir/generic-builder.nix similarity index 75% rename from pkgs/development/interpreters/elixir/default.nix rename to pkgs/development/interpreters/elixir/generic-builder.nix index 0e77b2af2524..60f044e16d0f 100644 --- a/pkgs/development/interpreters/elixir/default.nix +++ b/pkgs/development/interpreters/elixir/generic-builder.nix @@ -1,21 +1,20 @@ -{ stdenv, fetchFromGitHub, erlang, rebar, makeWrapper, coreutils, curl, bash, - debugInfo ? false }: +{ pkgs, stdenv, fetchFromGitHub, erlang, rebar, makeWrapper, coreutils, curl +, bash, debugInfo ? false }: -stdenv.mkDerivation rec { - name = "elixir-${version}"; - version = "1.4.4"; +{ baseName ? "elixir" +, version +, sha256 ? null +, rev ? "v${version}" +, src ? fetchFromGitHub { inherit rev sha256; owner = "elixir-lang"; repo = "elixir"; } +}: - src = fetchFromGitHub { - owner = "elixir-lang"; - repo = "elixir"; - rev = "v${version}"; - sha256 = "0m51cirkv1dahw4z2jlmz58cwmpy0dya88myx4wykq0v5bh1xbq8"; - }; +stdenv.mkDerivation ({ + name = "${baseName}-${version}"; + + inherit src version; buildInputs = [ erlang rebar makeWrapper ]; - # Elixir expects that UTF-8 locale to be set (see https://github.com/elixir-lang/elixir/issues/3548). - # In other cases there is warnings during compilation. LANG = "en_US.UTF-8"; LC_TYPE = "en_US.UTF-8"; @@ -66,6 +65,6 @@ stdenv.mkDerivation rec { license = licenses.epl10; platforms = platforms.unix; - maintainers = with maintainers; [ the-kenny havvy couchemar ]; + maintainers = with maintainers; [ the-kenny havvy couchemar ankhers ]; }; -} +}) diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix index acdbea673328..877feaee8710 100644 --- a/pkgs/top-level/beam-packages.nix +++ b/pkgs/top-level/beam-packages.nix @@ -57,6 +57,9 @@ rec { # access for example elixir built with different version of Erlang, use # `beam.packages.erlangR19.elixir`. elixir = packages.erlang.elixir; + elixir-1_4 = packages.erlang.elixir-1_4; + elixir-1_3 = packages.erlang.elixir-1_3; + lfe = packages.erlang.lfe; };