Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / beam-modules / fetch-mix-deps.nix
blobb9a1add3c7d161840f62f3af7409be52ee7fd09d
1 { stdenvNoCC, lib, elixir, hex, rebar, rebar3, cacert, git }@inputs:
3 { pname
4 , version
5 , hash ? ""
6 , sha256 ? ""
7 , src
8 , mixEnv ? "prod"
9 , debug ? false
10 , meta ? { }
11 , patches ? []
12 , elixir ? inputs.elixir
13 , hex ? inputs.hex.override { inherit elixir; }
14 , ...
15 }@attrs:
17 let
18   hash_ =
19     if hash != "" then { outputHashAlgo = null; outputHash = hash; }
20     else if sha256 != "" then { outputHashAlgo = "sha256"; outputHash = sha256; }
21     else { outputHashAlgo = "sha256"; outputHash = lib.fakeSha256; };
23 stdenvNoCC.mkDerivation (attrs // {
24   nativeBuildInputs = [ elixir hex cacert git ];
26   MIX_ENV = mixEnv;
27   MIX_DEBUG = if debug then 1 else 0;
28   DEBUG = if debug then 1 else 0; # for rebar3
29   # the api with `mix local.rebar rebar path` makes a copy of the binary
30   MIX_REBAR = "${rebar}/bin/rebar";
31   MIX_REBAR3 = "${rebar3}/bin/rebar3";
32   # there is a persistent download failure with absinthe 1.6.3
33   # those defaults reduce the failure rate
34   HEX_HTTP_CONCURRENCY = 1;
35   HEX_HTTP_TIMEOUT = 120;
37   configurePhase = attrs.configurePhase or ''
38     runHook preConfigure
39     export HEX_HOME="$TEMPDIR/.hex";
40     export MIX_HOME="$TEMPDIR/.mix";
41     export MIX_DEPS_PATH="$TEMPDIR/deps";
43     # Rebar
44     export REBAR_GLOBAL_CONFIG_DIR="$TMPDIR/rebar3"
45     export REBAR_CACHE_DIR="$TMPDIR/rebar3.cache"
46     runHook postConfigure
47   '';
49   inherit patches;
51   dontBuild = true;
53   installPhase = attrs.installPhase or ''
54     runHook preInstall
55     mix deps.get ''${MIX_ENV:+--only $MIX_ENV}
56     find "$TEMPDIR/deps" -path '*/.git/*' -a ! -name HEAD -exec rm -rf {} +
57     cp -r --no-preserve=mode,ownership,timestamps $TEMPDIR/deps $out
58     runHook postInstall
59   '';
61   outputHashMode = "recursive";
63   impureEnvVars = lib.fetchers.proxyImpureEnvVars;
64   inherit meta;
65 } // hash_)