From 9d4a2cf0a6947893587e2300a8b2c870e099f4a1 Mon Sep 17 00:00:00 2001 From: Arthur Noel Date: Tue, 19 Dec 2023 19:43:10 +0000 Subject: [PATCH 1/2] consistently use $direnv builtin --- default.nix | 7 +++++-- direnvrc | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/default.nix b/default.nix index bbfea9e..edfa587 100644 --- a/default.nix +++ b/default.nix @@ -24,7 +24,7 @@ resholve.mkDerivation rec { default = { scripts = [ "share/${pname}/direnvrc" ]; interpreter = "none"; - inputs = [ coreutils direnv nix ]; + inputs = [ coreutils nix ]; fake = { builtin = [ "PATH_add" @@ -40,7 +40,10 @@ resholve.mkDerivation rec { "shasum" ]; }; - keep."$cmd" = true; + keep = { + "$cmd" = true; + "$direnv" = true; + }; execer = [ "cannot:${direnv}/bin/direnv" "cannot:${nix}/bin/nix" diff --git a/direnvrc b/direnvrc index b23d460..bbedc7f 100644 --- a/direnvrc +++ b/direnvrc @@ -39,7 +39,8 @@ _nix() { _require_version() { local cmd=$1 version=$2 required=$3 if ! printf "%s\n" "$required" "$version" | sort --check=quiet --version-sort; then - _nix_direnv_fatal "minimum required $cmd version is $required (installed: $version)" + _nix_direnv_fatal \ + "minimum required $(basename "$cmd") version is $required (installed: $version)" fi } @@ -219,7 +220,7 @@ _nix_direnv_watches() { path=$(printf "$path") _watches+=("$path") fi - done < <(direnv show_dump "${DIRENV_WATCHES}") + done < <($direnv show_dump "${DIRENV_WATCHES}") } _nix_direnv_manual_reload=0 From e079c6baa211bc3271485afbecf91218bd741c3d Mon Sep 17 00:00:00 2001 From: Arthur Noel Date: Tue, 19 Dec 2023 19:47:34 +0000 Subject: [PATCH 2/2] make version check skip less fragile --- default.nix | 4 ++-- direnvrc | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/default.nix b/default.nix index edfa587..b26ff24 100644 --- a/default.nix +++ b/default.nix @@ -11,9 +11,9 @@ resholve.mkDerivation rec { name = pname; }; - # drop min version checks which are redundant when built with nix + # skip min version checks which are redundant when built with nix postPatch = '' - sed -i "/_require_version bash/,+2d" direnvrc + sed -i 1iNIX_DIRENV_SKIP_VERSION_CHECK=1 direnvrc ''; installPhase = '' diff --git a/direnvrc b/direnvrc index bbedc7f..66a33aa 100644 --- a/direnvrc +++ b/direnvrc @@ -60,13 +60,16 @@ _nix_direnv_preflight() { _nix_direnv_fatal '$direnv environment variable was not defined. Was this script run inside direnv?' fi - # check command min versions, bash check uses $BASH_VERSION with _require_version - # instead of _require_cmd_version because _require_cmd_version uses =~ operator which - # would be a syntax error on bash < 3 - _require_version bash "$BASH_VERSION" "$BASH_MIN_VERSION" - # direnv stdlib defines $direnv - _require_cmd_version "$direnv" "$DIRENV_MIN_VERSION" - _require_cmd_version nix "$NIX_MIN_VERSION" + # check command min versions + if [[ -z ${NIX_DIRENV_SKIP_VERSION_CHECK:-} ]]; then + # bash check uses $BASH_VERSION with _require_version instead of + # _require_cmd_version because _require_cmd_version uses =~ operator which would be + # a syntax error on bash < 3 + _require_version bash "$BASH_VERSION" "$BASH_MIN_VERSION" + # direnv stdlib defines $direnv + _require_cmd_version "$direnv" "$DIRENV_MIN_VERSION" + _require_cmd_version nix "$NIX_MIN_VERSION" + fi local layout_dir layout_dir=$(direnv_layout_dir)