diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index 675521d216d7..fb0b8b5debad 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -86,6 +86,7 @@ makeScopeWithSplicing' { mixBuildDirHook mixCompileHook mixEscriptSetupHook + mixReleaseSetupHook rebar3CompileHook rebarDevendorPatchHook ; diff --git a/pkgs/development/beam-modules/hooks/default.nix b/pkgs/development/beam-modules/hooks/default.nix index 4b87953ab1f4..304134c645fe 100644 --- a/pkgs/development/beam-modules/hooks/default.nix +++ b/pkgs/development/beam-modules/hooks/default.nix @@ -33,6 +33,11 @@ meta.license = lib.licenses.mit; } ./mix-escript-setup-hook.sh; + mixReleaseSetupHook = makeSetupHook { + name = "mix-release-setup-hook.sh"; + meta.license = lib.licenses.mit; + } ./mix-release-setup-hook.sh; + rebar3CompileHook = makeSetupHook { name = "rebar3-compile-hook.sh"; meta.license = lib.licenses.mit; diff --git a/pkgs/development/beam-modules/hooks/mix-release-setup-hook.sh b/pkgs/development/beam-modules/hooks/mix-release-setup-hook.sh new file mode 100644 index 000000000000..b073f63cbcc1 --- /dev/null +++ b/pkgs/development/beam-modules/hooks/mix-release-setup-hook.sh @@ -0,0 +1,17 @@ +# shellcheck shell=bash + +mixReleaseInstallHook() { + echo "Executing mixReleaseInstallHook" + + runHook preInstall + + mix release ${mixReleaseName:+"$mixReleaseName"} --no-deps-check --path "$out" + + runHook postInstall + + echo "Finished mixReleaseInstallHook" +} + +if [ -z "${dontMixReleaseInstall-}" ] && [ -z "${installPhase-}" ]; then + installPhase=mixReleaseInstallHook +fi diff --git a/pkgs/development/beam-modules/mix-release.nix b/pkgs/development/beam-modules/mix-release.nix index 60505f060993..d8fb15bd89c2 100644 --- a/pkgs/development/beam-modules/mix-release.nix +++ b/pkgs/development/beam-modules/mix-release.nix @@ -17,7 +17,9 @@ gnugrep, gawk, mixBuildDirHook, + mixCompileHook, mixEscriptSetupHook, + mixReleaseSetupHook, }@inputs: lib.extendMkDerivation { @@ -42,6 +44,7 @@ lib.extendMkDerivation { mixEnv ? "prod", mixTarget ? "host", compileFlags ? [ ], + mixCompileFlags ? compileFlags, # Build a particular named release. # see https://hexdocs.pm/mix/1.12/Mix.Tasks.Release.html#content mixReleaseName ? "", @@ -115,8 +118,10 @@ lib.extendMkDerivation { ripgrep mixBuildDirHook + mixCompileHook ] ++ lib.optionals (escriptBinName != null) [ mixEscriptSetupHook ] + ++ lib.optionals (escriptBinName == null) [ mixReleaseSetupHook ] ++ (builtins.attrValues mixNixDeps); buildInputs = [ @@ -208,24 +213,6 @@ lib.extendMkDerivation { runHook postConfigure ''; - buildPhase = - attrs.buildPhase or '' - runHook preBuild - - mix compile --no-deps-check ${lib.concatStringsSep " " compileFlags} - - runHook postBuild - ''; - - installPhase = - attrs.installPhase or '' - runHook preInstall - - mix release ${mixReleaseName} --no-deps-check --path "$out" - - runHook postInstall - ''; - postFixup = '' echo "removing files for Microsoft Windows" rm -f "$out"/bin/*.bat