about summary refs log tree commit diff
path: root/pkgs/development/beam-modules/fetch-mix-deps.nix
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/fetch-mix-deps.nix
parentf0b378026ddbb60ad46947e5dbbf52a12b245f0e (diff)
downloadnixlib-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar
nixlib-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.gz
nixlib-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.bz2
nixlib-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.lz
nixlib-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.xz
nixlib-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.tar.zst
nixlib-7fbb9e8d04bedeb74c415a74ee6f79c577e67a18.zip
beam-modules: add fetch-mix-deps
Diffstat (limited to 'pkgs/development/beam-modules/fetch-mix-deps.nix')
-rw-r--r--pkgs/development/beam-modules/fetch-mix-deps.nix41
1 files changed, 41 insertions, 0 deletions
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 000000000000..31f0821e81de
--- /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;
+})