diff --git a/pkgs/development/interpreters/elixir/default.nix b/pkgs/development/interpreters/elixir/default.nix new file mode 100644 index 00000000000..ffa4402a72a --- /dev/null +++ b/pkgs/development/interpreters/elixir/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchurl, erlang, rebar }: + +stdenv.mkDerivation { + name = "elixir-0.10.1"; + + src = fetchurl { + url = "https://github.com/elixir-lang/elixir/archive/v0.10.1.tar.gz"; + sha256 = "0gfr2bz3mw7ag9z2wb2g22n2vlyrp8dwy78fj9zi52kzl5w3vc3w"; + }; + + buildInputs = [ erlang rebar ]; + + preBuild = '' + substituteInPlace rebar \ + --replace "/usr/bin/env escript" ${erlang}/bin/escript + substituteInPlace Makefile \ + --replace '$(shell echo `pwd`/rebar)' ${rebar}/bin/rebar \ + --replace "/usr/local" $out + ''; + + meta = { + homepage = "http://elixir-lang.org/"; + description = "Elixir is a functional, meta-programming aware language built on top of the Erlang VM."; + + longDescription = '' + Elixir is a functional, meta-programming + aware language built on top of the Erlang VM. It is a dynamic + language with flexible syntax and macro support that leverages + Erlang's abilities to build concurrent, distributed and + fault-tolerant applications with hot code upgrades.p + ''; + + platforms = stdenv.lib.platforms.linux; + + maintainers = [ stdenv.lib.maintainers.the-kenny ]; + }; +} diff --git a/pkgs/development/interpreters/erlang/R16B01.nix b/pkgs/development/interpreters/erlang/R16B01.nix new file mode 100644 index 00000000000..902af75d494 --- /dev/null +++ b/pkgs/development/interpreters/erlang/R16B01.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchurl, perl, gnum4, ncurses, openssl +, wxSupport ? false, mesa ? null, wxGTK ? null, xlibs ? null }: + +assert wxSupport -> mesa != null && wxGTK != null && xlibs != null; + +let version = "16B01"; in + +stdenv.mkDerivation { + name = "erlang-" + version; + + src = fetchurl { + url = "http://www.erlang.org/download/otp_src_R16B01.tar.gz"; + sha256 = "1h5b2mil79z307mc7ammi38qnd8f50n3sv5vyl4d1gcfgg08nf6s"; + }; + + buildInputs = + [ perl gnum4 ncurses openssl + ] ++ stdenv.lib.optional wxSupport [ mesa wxGTK xlibs.libX11 ]; + + patchPhase = '' sed -i "s@/bin/rm@rm@" lib/odbc/configure erts/configure ''; + + preConfigure = '' + export HOME=$PWD/../ + sed -e s@/bin/pwd@pwd@g -i otp_build + ''; + + configureFlags = "--with-ssl=${openssl}"; + + meta = { + homepage = "http://www.erlang.org/"; + description = "Programming language used for massively scalable soft real-time systems"; + + longDescription = '' + Erlang is a programming language used to build massively scalable + soft real-time systems with requirements on high availability. + Some of its uses are in telecoms, banking, e-commerce, computer + telephony and instant messaging. Erlang's runtime system has + built-in support for concurrency, distribution and fault + tolerance. + ''; + + platforms = stdenv.lib.platforms.linux; + # Note: Maintainer of prev. erlang version was simons. If he wants + # to continue maintaining erlang I'm totally ok with that. + maintainers = [ stdenv.lib.maintainers.the-kenny ]; + }; +} diff --git a/pkgs/development/tools/build-managers/rebar/default.nix b/pkgs/development/tools/build-managers/rebar/default.nix new file mode 100644 index 00000000000..68eacf8d2ea --- /dev/null +++ b/pkgs/development/tools/build-managers/rebar/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, erlang }: + +stdenv.mkDerivation { + name = "rebar-2.1.0-pre"; + + src = fetchurl { + url = "https://github.com/basho/rebar/archive/2.1.0-pre.tar.gz"; + sha256 = "0dsbk9ssvk1hx9275900dg4bz79kpwcid4gsz09ziiwzv0jjbrjn"; + }; + + buildInputs = [ erlang ]; + + buildPhase = "escript bootstrap"; + installPhase = '' + mkdir -p $out/bin + cp rebar $out/bin/rebar + ''; + + meta = { + homepage = "https://github.com/rebar/rebar"; + description = "Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases."; + + longDescription = '' + rebar is a self-contained Erlang script, so it's easy to + distribute or even embed directly in a project. Where possible, + rebar uses standard Erlang/OTP conventions for project + structures, thus minimizing the amount of build configuration + work. rebar also provides dependency management, enabling + application writers to easily re-use common libraries from a + variety of locations (git, hg, etc). + ''; + + platforms = stdenv.lib.platforms.linux; + maintainers = [ stdenv.lib.maintainers.the-kenny ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5cc5024ed79..0d9e0be1e6e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3042,7 +3042,12 @@ let erlangR14B04 = callPackage ../development/interpreters/erlang/R14B04.nix { }; erlangR15B03 = callPackage ../development/interpreters/erlang/R15B03.nix { }; - erlang = erlangR15B03; + erlangR16B01 = callPackage ../development/interpreters/erlang/R16B01.nix { }; + erlang = erlangR16B01; + + rebar = callPackage ../development/tools/build-managers/rebar { }; + + elixir = callPackage ../development/interpreters/elixir { }; groovy = callPackage ../development/interpreters/groovy { };