@@ -26,11 +26,7 @@ _nix_direnv_warning() {
2626 fi
2727}
2828
29- _nix_direnv_fatal() {
30- log_error "${_NIX_DIRENV_LOG_PREFIX}$*"
31- # exit 1 rather than return 1 since we may not be running in strict mode
32- exit 1
33- }
29+ _nix_direnv_error() { log_error "${_NIX_DIRENV_LOG_PREFIX}$*"; }
3430
3531_nix() {
3632 nix --extra-experimental-features "nix-command flakes" "$@"
@@ -39,15 +35,17 @@ _nix() {
3935_require_version() {
4036 local cmd=$1 version=$2 required=$3
4137 if ! printf "%s\n" "$required" "$version" | LC_ALL=C sort -c -V 2>/dev/null; then
42- _nix_direnv_fatal \
38+ _nix_direnv_error \
4339 "minimum required $(basename "$cmd") version is $required (installed: $version)"
40+ return 1
4441 fi
4542}
4643
4744_require_cmd_version() {
4845 local cmd=$1 required=$2 version
4946 if ! has "$cmd"; then
50- _nix_direnv_fatal "command not found: $cmd"
47+ _nix_direnv_error "command not found: $cmd"
48+ return 1
5149 fi
5250 version=$($cmd --version)
5351 [[ $version =~ ([0-9]+\.[0-9]+\.[0-9]+) ]]
@@ -57,18 +55,20 @@ _require_cmd_version() {
5755_nix_direnv_preflight() {
5856 if [[ -z $direnv ]]; then
5957 # shellcheck disable=2016
60- _nix_direnv_fatal '$direnv environment variable was not defined. Was this script run inside direnv?'
58+ _nix_direnv_error '$direnv environment variable was not defined. Was this script run inside direnv?'
59+ return 1
6160 fi
6261
6362 # check command min versions
6463 if [[ -z ${NIX_DIRENV_SKIP_VERSION_CHECK:-} ]]; then
6564 # bash check uses $BASH_VERSION with _require_version instead of
6665 # _require_cmd_version because _require_cmd_version uses =~ operator which would be
6766 # a syntax error on bash < 3
68- _require_version bash "$BASH_VERSION" "$BASH_MIN_VERSION"
69- # direnv stdlib defines $direnv
70- _require_cmd_version "$direnv" "$DIRENV_MIN_VERSION"
71- _require_cmd_version nix "$NIX_MIN_VERSION"
67+ if ! _require_version bash "$BASH_VERSION" "$BASH_MIN_VERSION" ||
68+ ! _require_cmd_version "$direnv" "$DIRENV_MIN_VERSION" || # direnv stdlib defines $direnv
69+ ! _require_cmd_version nix "$NIX_MIN_VERSION"; then
70+ return 1
71+ fi
7272 fi
7373
7474 local layout_dir
@@ -240,7 +240,9 @@ _nix_direnv_warn_manual_reload() {
240240}
241241
242242use_flake() {
243- _nix_direnv_preflight
243+ if ! _nix_direnv_preflight; then
244+ exit 1
245+ fi
244246
245247 flake_expr="${1:-.}"
246248 flake_dir="${flake_expr%#*}"
@@ -329,7 +331,9 @@ use_flake() {
329331}
330332
331333use_nix() {
332- _nix_direnv_preflight
334+ if ! _nix_direnv_preflight; then
335+ exit 1
336+ fi
333337
334338 local layout_dir path version
335339 layout_dir=$(direnv_layout_dir)
0 commit comments