diff --git a/pkgs/by-name/ni/nix-direnv/package.nix b/pkgs/by-name/ni/nix-direnv/package.nix index 42569d8e79737..ff56c097c29a5 100644 --- a/pkgs/by-name/ni/nix-direnv/package.nix +++ b/pkgs/by-name/ni/nix-direnv/package.nix @@ -1,23 +1,25 @@ -{ resholve, lib, coreutils, direnv, nix, fetchFromGitHub }: +{ + resholve, + lib, + coreutils, + nix, + fetchFromGitHub, + writeText, +}: # resholve does not yet support `finalAttrs` call pattern hence `rec` # https://github.com/abathur/resholve/issues/107 resholve.mkDerivation rec { pname = "nix-direnv"; - version = "3.0.5"; + version = "3.0.6"; src = fetchFromGitHub { owner = "nix-community"; repo = "nix-direnv"; rev = version; - hash = "sha256-imUlc5v/Ow7dgjCjTyEeet+4lNHLeEwfqGQcB4dKcao="; + hash = "sha256-oNqhPqgQT92yxbKmcgX4F3e2yTUPyXYG7b2xQm3TvQw="; }; - # skip min version checks which are redundant when built with nix - postPatch = '' - sed -i 1iNIX_DIRENV_SKIP_VERSION_CHECK=1 direnvrc - ''; - installPhase = '' runHook preInstall install -m400 -D direnvrc $out/share/nix-direnv/direnvrc @@ -28,7 +30,7 @@ resholve.mkDerivation rec { default = { scripts = [ "share/nix-direnv/direnvrc" ]; interpreter = "none"; - inputs = [ coreutils nix ]; + inputs = [ coreutils ]; fake = { builtin = [ "PATH_add" @@ -43,23 +45,36 @@ resholve.mkDerivation rec { # cannot be reached when built with nix "shasum" ]; + external = [ + # We want to reference the ambient Nix when possible, and have custom logic + # for the fallback + "nix" + ]; }; keep = { "$cmd" = true; "$direnv" = true; + + # Nix fallback implementation + "$_nix_direnv_nix" = true; + "$ambient_nix" = true; + "$NIX_DIRENV_FALLBACK_NIX" = true; }; - execer = [ - "cannot:${direnv}/bin/direnv" - "cannot:${nix}/bin/nix" - ]; + prologue = + (writeText "prologue.sh" '' + NIX_DIRENV_FALLBACK_NIX=''${NIX_DIRENV_FALLBACK_NIX:-${lib.getExe nix}} + '').outPath; }; }; meta = { - description = "A fast, persistent use_nix implementation for direnv"; - homepage = "https://github.com/nix-community/nix-direnv"; - license = lib.licenses.mit; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ mic92 bbenne10 ]; + description = "Fast, persistent use_nix implementation for direnv"; + homepage = "https://github.com/nix-community/nix-direnv"; + license = lib.licenses.mit; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ + mic92 + bbenne10 + ]; }; }