45 lines
1.1 KiB
Nix
45 lines
1.1 KiB
Nix
{ stdenvNoCC, elixir, hex, rebar, rebar3, cacert, git }:
|
|
|
|
{ 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 git ];
|
|
|
|
inherit src;
|
|
|
|
MIX_ENV = mixEnv;
|
|
MIX_DEBUG = if debug then 1 else 0;
|
|
DEBUG = if debug then 1 else 0; # for rebar3
|
|
|
|
configurePhase = ''
|
|
export HEX_HOME="$TEMPDIR/.hex";
|
|
export MIX_HOME="$TEMPDIR/.mix";
|
|
export MIX_DEPS_PATH="$out";
|
|
|
|
# Rebar
|
|
mix local.rebar rebar "${rebar}/bin/rebar"
|
|
mix local.rebar rebar3 "${rebar3}/bin/rebar3"
|
|
export REBAR_GLOBAL_CONFIG_DIR="$TMPDIR/rebar3"
|
|
export REBAR_CACHE_DIR="$TMPDIR/rebar3.cache"
|
|
'';
|
|
|
|
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;
|
|
})
|