aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/di/direnv/pre-cache.sh
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-08-18 17:44:50 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-08-18 17:44:50 +0200
commit6b96741ba12a060ee67d0b9f964e0e3ec7e36a94 (patch)
treed1625ea80a7156cb1a802f64e1fe42591f72c5aa /modules/by-name/di/direnv/pre-cache.sh
parentmodules/direnv/pre_cache: Don't force delete the tmp_profile (diff)
downloadnixos-config-6b96741ba12a060ee67d0b9f964e0e3ec7e36a94.zip
modules/direnv/pre-cache: Remove `nix build` from hot path
Diffstat (limited to 'modules/by-name/di/direnv/pre-cache.sh')
-rwxr-xr-xmodules/by-name/di/direnv/pre-cache.sh24
1 files changed, 16 insertions, 8 deletions
diff --git a/modules/by-name/di/direnv/pre-cache.sh b/modules/by-name/di/direnv/pre-cache.sh
index 8c43a556..d2174f98 100755
--- a/modules/by-name/di/direnv/pre-cache.sh
+++ b/modules/by-name/di/direnv/pre-cache.sh
@@ -50,24 +50,32 @@ _pre_cache_build_shells() {
installables=""
for lang in "$@"; do
- new_part="$REPO#devShells.$system.$lang"
+ lang_cache="$final_cache/$lang"
- if [ -z "$installables" ]; then
- installables="$new_part"
- else
- installables="$installables $new_part"
+ if ! [ -f "$lang_cache" ]; then
+ new_part="$REPO#devShells.$system.$lang"
+
+ if [ -z "$installables" ]; then
+ installables="$new_part"
+ else
+ installables="$installables $new_part"
+ fi
fi
done
- # We want shell-spliting
- # shellcheck disable=SC2086
- _nix build --no-link $installables
+ if [ -n "$installables" ]; then
+ _pre_cache_log "Building '$installables'..."
+ # We want shell-spliting
+ # shellcheck disable=SC2086
+ _nix build --no-link $installables
+ fi
}
pre_cache_load() {
_pre_cache_preflight
+ # Build all not-yet build shells concurrently. That speeds up the initial load.
_pre_cache_build_shells "$@"
for lan in "$@"; do