diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index 8e0db062e3d7..686fedb24d6d 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -85,6 +85,7 @@ makeScopeWithSplicing' { mixAppConfigPatchHook mixBuildDirHook mixCompileHook + mixDepsCompileHook mixEscriptSetupHook mixFodDepsSetupHook mixNixDepsSetupHook diff --git a/pkgs/development/beam-modules/hooks/default.nix b/pkgs/development/beam-modules/hooks/default.nix index 335a181ebba7..495b9532cc5a 100644 --- a/pkgs/development/beam-modules/hooks/default.nix +++ b/pkgs/development/beam-modules/hooks/default.nix @@ -28,6 +28,11 @@ meta.license = lib.licenses.mit; } ./mix-compile-hook.sh; + mixDepsCompileHook = makeSetupHook { + name = "mix-deps-compile-hook.sh"; + meta.license = lib.licenses.mit; + } ./mix-deps-compile-hook.sh; + mixEscriptSetupHook = makeSetupHook { name = "mix-escript-setup-hook.sh"; meta.license = lib.licenses.mit; diff --git a/pkgs/development/beam-modules/hooks/mix-deps-compile-hook.sh b/pkgs/development/beam-modules/hooks/mix-deps-compile-hook.sh new file mode 100755 index 000000000000..cd6473eb6702 --- /dev/null +++ b/pkgs/development/beam-modules/hooks/mix-deps-compile-hook.sh @@ -0,0 +1,17 @@ +# shellcheck shell=bash +# +# This is needed for projects that have a specific compile step +# the dependency needs to be compiled in order for the task +# to be available. +# +# Phoenix projects for example will need compile.phoenix. + +mixDepsCompileHook() { + echo "Executing mixDepsCompileHook" + + mix deps.compile --no-deps-check --skip-umbrella-children + + echo "Finished mixDepsCompileHook" +} + +postConfigureHooks+=(mixDepsCompileHook) diff --git a/pkgs/development/beam-modules/mix-release.nix b/pkgs/development/beam-modules/mix-release.nix index 1d14209fd469..2d3b21642878 100644 --- a/pkgs/development/beam-modules/mix-release.nix +++ b/pkgs/development/beam-modules/mix-release.nix @@ -19,6 +19,7 @@ gawk, mixBuildDirHook, mixCompileHook, + mixDepsCompileHook, mixEscriptSetupHook, mixFodDepsSetupHook, mixNixDepsSetupHook, @@ -122,6 +123,7 @@ lib.extendMkDerivation { mixBuildDirHook mixCompileHook + mixDepsCompileHook ] ++ lib.optionals (escriptBinName != null) [ mixEscriptSetupHook ] ++ lib.optionals (escriptBinName == null) [ mixReleaseSetupHook ] @@ -165,20 +167,6 @@ lib.extendMkDerivation { } // (attrs.env or { }); - configurePhase = - attrs.configurePhase or '' - runHook preConfigure - - # This is needed for projects that have a specific compile step - # the dependency needs to be compiled in order for the task - # to be available. - # - # Phoenix projects for example will need compile.phoenix. - mix deps.compile --no-deps-check --skip-umbrella-children - - runHook postConfigure - ''; - postFixup = '' echo "removing files for Microsoft Windows" rm -f "$out"/bin/*.bat