Merge pull request #449 from kingarrrt/fixup

Fixup `$direnv` usage
This commit is contained in:
mergify[bot] 2023-12-20 07:03:29 +00:00 committed by GitHub
commit f4123add44
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 13 deletions

View file

@ -11,9 +11,9 @@ resholve.mkDerivation rec {
name = pname; 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 = '' postPatch = ''
sed -i "/_require_version bash/,+2d" direnvrc sed -i 1iNIX_DIRENV_SKIP_VERSION_CHECK=1 direnvrc
''; '';
installPhase = '' installPhase = ''
@ -24,7 +24,7 @@ resholve.mkDerivation rec {
default = { default = {
scripts = [ "share/${pname}/direnvrc" ]; scripts = [ "share/${pname}/direnvrc" ];
interpreter = "none"; interpreter = "none";
inputs = [ coreutils direnv nix ]; inputs = [ coreutils nix ];
fake = { fake = {
builtin = [ builtin = [
"PATH_add" "PATH_add"
@ -40,7 +40,10 @@ resholve.mkDerivation rec {
"shasum" "shasum"
]; ];
}; };
keep."$cmd" = true; keep = {
"$cmd" = true;
"$direnv" = true;
};
execer = [ execer = [
"cannot:${direnv}/bin/direnv" "cannot:${direnv}/bin/direnv"
"cannot:${nix}/bin/nix" "cannot:${nix}/bin/nix"

View file

@ -39,7 +39,8 @@ _nix() {
_require_version() { _require_version() {
local cmd=$1 version=$2 required=$3 local cmd=$1 version=$2 required=$3
if ! printf "%s\n" "$required" "$version" | sort --check=quiet --version-sort; then 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 fi
} }
@ -59,13 +60,16 @@ _nix_direnv_preflight() {
_nix_direnv_fatal '$direnv environment variable was not defined. Was this script run inside direnv?' _nix_direnv_fatal '$direnv environment variable was not defined. Was this script run inside direnv?'
fi fi
# check command min versions, bash check uses $BASH_VERSION with _require_version # check command min versions
# instead of _require_cmd_version because _require_cmd_version uses =~ operator which if [[ -z ${NIX_DIRENV_SKIP_VERSION_CHECK:-} ]]; then
# would be a syntax error on bash < 3 # 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" _require_version bash "$BASH_VERSION" "$BASH_MIN_VERSION"
# direnv stdlib defines $direnv # direnv stdlib defines $direnv
_require_cmd_version "$direnv" "$DIRENV_MIN_VERSION" _require_cmd_version "$direnv" "$DIRENV_MIN_VERSION"
_require_cmd_version nix "$NIX_MIN_VERSION" _require_cmd_version nix "$NIX_MIN_VERSION"
fi
local layout_dir local layout_dir
layout_dir=$(direnv_layout_dir) layout_dir=$(direnv_layout_dir)
@ -219,7 +223,7 @@ _nix_direnv_watches() {
path=$(printf "$path") path=$(printf "$path")
_watches+=("$path") _watches+=("$path")
fi fi
done < <(direnv show_dump "${DIRENV_WATCHES}") done < <($direnv show_dump "${DIRENV_WATCHES}")
} }
_nix_direnv_manual_reload=0 _nix_direnv_manual_reload=0