buildMix: default to removing target config (#430275)

This commit is contained in:
Yt 2025-08-05 19:33:51 -04:00 committed by GitHub
commit 1b240ff169
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -25,12 +25,15 @@
meta ? { },
enableDebugInfo ? false,
mixEnv ? "prod",
removeConfig ? true,
# A config directory that is considered for all the dependencies of an app, typically in $src/config/
# This was initially added, as some of Mobilizon's dependencies need to access the config at build time.
appConfigPath ? null,
...
}@attrs:
assert appConfigPath != null -> removeConfig;
let
shell =
drv:
@ -79,10 +82,17 @@ let
runHook preConfigure
${./mix-configure-hook.sh}
${lib.optionalString (removeConfig && isNull appConfigPath)
# By default, we don't want to include whatever config a dependency brings; per
# https://hexdocs.pm/elixir/main/Config.html, config is application specific.
''
rm -rf config
mkdir config
''
}
${lib.optionalString (!isNull appConfigPath)
# Due to https://hexdocs.pm/elixir/main/Config.html the config directory
# of a library seems to be not considered, as config is always
# application specific. So we can safely delete it.
# Some more tightly-coupled dependencies do depend on the config of the application
# they're being built for.
''
rm -rf config
cp -r ${appConfigPath} config