From 08b5620188d87e724cd4917eb7f7b6d48c6511b2 Mon Sep 17 00:00:00 2001 From: Philipp Jungkamp Date: Tue, 13 Jun 2023 10:17:57 +0200 Subject: [PATCH] packaging-nix: work around direnv bug Restore the TMP, TEMP, TMPDIR, TEMPDIR variables to their previous values if `use flake` modified them in `.envrc`. Signed-off-by: Philipp Jungkamp --- .envrc | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/.envrc b/.envrc index 621e974a8..7239e2fce 100644 --- a/.envrc +++ b/.envrc @@ -1,7 +1,34 @@ + +export_or_unset() +{ + local var=$1 + + if [ -z "${!var+x}" ]; then + return + fi + + if [ -n "$2" ]; then + export $var="$2" + else + unset $var + fi + +} + if direnv_version "2.30.0" \ && has nix \ && nix show-config experimental-features 2>/dev/null | grep -wqF flakes then - watch_file ./packaging/nix/*.nix - use flake ./packaging/nix + local oldtmp="$TMP" + local oldtemp="$TEMP" + local oldtmpdir="$TMPDIR" + local oldtempdir="$TEMPDIR" + + watch_file ./packaging/nix/*.nix + use flake ./packaging/nix + + export_or_unset TMP "$oldtmp" + export_or_unset TEMP "$oldtemp" + export_or_unset TMPDIR "$oldtmpdir" + export_or_unset TEMPDIR "$oldtempdir" fi