2021-11-02 12:57:13 +00:00
|
|
|
{ stdenvNoCC, lib, elixir, hex, rebar, rebar3, cacert, git }@inputs:
|
2020-12-23 04:16:44 +00:00
|
|
|
|
2021-04-08 11:54:48 +00:00
|
|
|
{ pname
|
|
|
|
, version
|
2023-06-04 22:28:35 +00:00
|
|
|
, hash ? ""
|
|
|
|
, sha256 ? ""
|
2021-04-08 11:54:48 +00:00
|
|
|
, src
|
|
|
|
, mixEnv ? "prod"
|
|
|
|
, debug ? false
|
|
|
|
, meta ? { }
|
2021-05-29 14:12:51 +00:00
|
|
|
, patches ? []
|
2021-11-02 12:57:13 +00:00
|
|
|
, elixir ? inputs.elixir
|
|
|
|
, hex ? inputs.hex.override { inherit elixir; }
|
2021-04-08 11:54:48 +00:00
|
|
|
, ...
|
|
|
|
}@attrs:
|
|
|
|
|
2023-06-04 22:28:35 +00:00
|
|
|
let
|
|
|
|
hash_ =
|
|
|
|
if hash != "" then { outputHashAlgo = null; outputHash = hash; }
|
|
|
|
else if sha256 != "" then { outputHashAlgo = "sha256"; outputHash = sha256; }
|
|
|
|
else { outputHashAlgo = "sha256"; outputHash = lib.fakeSha256; };
|
|
|
|
in
|
2021-04-08 11:54:48 +00:00
|
|
|
stdenvNoCC.mkDerivation (attrs // {
|
2020-12-31 03:27:08 +00:00
|
|
|
nativeBuildInputs = [ elixir hex cacert git ];
|
2020-12-23 04:16:44 +00:00
|
|
|
|
|
|
|
MIX_ENV = mixEnv;
|
|
|
|
MIX_DEBUG = if debug then 1 else 0;
|
2021-01-10 08:46:10 +00:00
|
|
|
DEBUG = if debug then 1 else 0; # for rebar3
|
2021-04-08 11:54:48 +00:00
|
|
|
# the api with `mix local.rebar rebar path` makes a copy of the binary
|
|
|
|
MIX_REBAR = "${rebar}/bin/rebar";
|
|
|
|
MIX_REBAR3 = "${rebar3}/bin/rebar3";
|
|
|
|
# there is a persistent download failure with absinthe 1.6.3
|
|
|
|
# those defaults reduce the failure rate
|
|
|
|
HEX_HTTP_CONCURRENCY = 1;
|
|
|
|
HEX_HTTP_TIMEOUT = 120;
|
|
|
|
|
|
|
|
configurePhase = attrs.configurePhase or ''
|
|
|
|
runHook preConfigure
|
2021-01-03 03:09:49 +00:00
|
|
|
export HEX_HOME="$TEMPDIR/.hex";
|
2020-12-23 04:16:44 +00:00
|
|
|
export MIX_HOME="$TEMPDIR/.mix";
|
2021-04-08 11:54:48 +00:00
|
|
|
export MIX_DEPS_PATH="$TEMPDIR/deps";
|
2021-01-10 08:46:10 +00:00
|
|
|
|
|
|
|
# Rebar
|
|
|
|
export REBAR_GLOBAL_CONFIG_DIR="$TMPDIR/rebar3"
|
|
|
|
export REBAR_CACHE_DIR="$TMPDIR/rebar3.cache"
|
2021-04-08 11:54:48 +00:00
|
|
|
runHook postConfigure
|
2020-12-23 04:16:44 +00:00
|
|
|
'';
|
|
|
|
|
2021-05-29 14:12:51 +00:00
|
|
|
inherit patches;
|
|
|
|
|
2021-02-01 00:58:51 +00:00
|
|
|
dontBuild = true;
|
|
|
|
|
2021-04-08 11:54:48 +00:00
|
|
|
installPhase = attrs.installPhase or ''
|
|
|
|
runHook preInstall
|
2023-02-17 15:35:51 +00:00
|
|
|
mix deps.get ''${MIX_ENV:+--only $MIX_ENV}
|
2021-04-08 11:54:48 +00:00
|
|
|
find "$TEMPDIR/deps" -path '*/.git/*' -a ! -name HEAD -exec rm -rf {} +
|
|
|
|
cp -r --no-preserve=mode,ownership,timestamps $TEMPDIR/deps $out
|
|
|
|
runHook postInstall
|
2020-12-23 04:16:44 +00:00
|
|
|
'';
|
|
|
|
|
|
|
|
outputHashMode = "recursive";
|
|
|
|
|
2021-02-01 00:58:51 +00:00
|
|
|
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
2020-12-23 04:16:44 +00:00
|
|
|
inherit meta;
|
2023-06-04 22:28:35 +00:00
|
|
|
} // hash_)
|