summary refs log tree commit diff
path: root/pkgs/development/beam-modules
diff options
context:
space:
mode:
authorhappysalada <raphael@megzari.com>2020-12-23 13:16:44 +0900
committerhappysalada <raphael@megzari.com>2021-02-01 09:34:44 +0900
commit7fbb9e8d04bedeb74c415a74ee6f79c577e67a18 (patch)
tree56789793331a8873102105a96077cd79ca628b80 /pkgs/development/beam-modules
parentf0b378026ddbb60ad46947e5dbbf52a12b245f0e (diff)
downloadnixpkgs-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar
nixpkgs-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.gz
nixpkgs-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.bz2
nixpkgs-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.lz
nixpkgs-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.xz
nixpkgs-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.zst
nixpkgs-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.zip
beam-modules: add fetch-mix-deps
Diffstat (limited to 'pkgs/development/beam-modules')
-rw-r--r--pkgs/development/beam-modules/default.nix1
-rw-r--r--pkgs/development/beam-modules/fetch-mix-deps.nix41
2 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix
index 4f312129b38..2392f778bc0 100644
--- a/pkgs/development/beam-modules/default.nix
+++ b/pkgs/development/beam-modules/default.nix
@@ -33,6 +33,7 @@ let
         buildRebar3 = callPackage ./build-rebar3.nix {};
         buildHex = callPackage ./build-hex.nix {};
         buildErlangMk = callPackage ./build-erlang-mk.nix {};
+        fetchMixDeps = callPackage ./fetch-mix-deps.nix { };
         buildMix = callPackage ./build-mix.nix {};
 
         # BEAM-based languages.
diff --git a/pkgs/development/beam-modules/fetch-mix-deps.nix b/pkgs/development/beam-modules/fetch-mix-deps.nix
new file mode 100644
index 00000000000..31f0821e81d
--- /dev/null
+++ b/pkgs/development/beam-modules/fetch-mix-deps.nix
@@ -0,0 +1,41 @@
+{ stdenvNoCC, elixir, hex, rebar, rebar3, cacert }:
+
+{ name, version, sha256, src, mixEnv ? "prod", debug ? false, meta ? { } }:
+
+with stdenvNoCC.lib;
+
+stdenvNoCC.mkDerivation ({
+  name = "mix-deps-${name}-${version}";
+
+  phases = [ "configurePhase" "downloadPhase" ];
+
+  nativeBuildInputs = [ elixir hex cacert ];
+
+  inherit src;
+
+  MIX_ENV = mixEnv;
+  MIX_REBAR = "${rebar}/bin/rebar";
+  MIX_REBAR3 = "${rebar3}/bin/rebar3";
+  MIX_DEBUG = if debug then 1 else 0;
+
+  configurePhase = ''
+    mkdir -p $out/deps
+    mkdir -p $out/.hex
+    export HEX_HOME="$out/.hex";
+    export MIX_HOME="$TEMPDIR/.mix";
+    export MIX_DEPS_PATH="$out/deps";
+  '';
+
+  downloadPhase = ''
+    ln -s ${src}/mix.exs ./mix.exs
+    ln -s ${src}/mix.lock ./mix.lock
+    mix deps.get --only ${mixEnv}
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = sha256;
+
+  impureEnvVars = stdenvNoCC.lib.fetchers.proxyImpureEnvVars;
+  inherit meta;
+})