base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / ni / nix-direnv / package.nix
blobff56c097c29a5a6ecd4bec33b41565ed70afdf3c
2   resholve,
3   lib,
4   coreutils,
5   nix,
6   fetchFromGitHub,
7   writeText,
8 }:
10 # resholve does not yet support `finalAttrs` call pattern hence `rec`
11 # https://github.com/abathur/resholve/issues/107
12 resholve.mkDerivation rec {
13   pname = "nix-direnv";
14   version = "3.0.6";
16   src = fetchFromGitHub {
17     owner = "nix-community";
18     repo = "nix-direnv";
19     rev = version;
20     hash = "sha256-oNqhPqgQT92yxbKmcgX4F3e2yTUPyXYG7b2xQm3TvQw=";
21   };
23   installPhase = ''
24     runHook preInstall
25     install -m400 -D direnvrc $out/share/nix-direnv/direnvrc
26     runHook postInstall
27   '';
29   solutions = {
30     default = {
31       scripts = [ "share/nix-direnv/direnvrc" ];
32       interpreter = "none";
33       inputs = [ coreutils ];
34       fake = {
35         builtin = [
36           "PATH_add"
37           "direnv_layout_dir"
38           "has"
39           "log_error"
40           "log_status"
41           "watch_file"
42         ];
43         function = [
44           # not really a function - this is in an else branch for macOS/homebrew that
45           # cannot be reached when built with nix
46           "shasum"
47         ];
48         external = [
49           # We want to reference the ambient Nix when possible, and have custom logic
50           # for the fallback
51           "nix"
52         ];
53       };
54       keep = {
55         "$cmd" = true;
56         "$direnv" = true;
58         # Nix fallback implementation
59         "$_nix_direnv_nix" = true;
60         "$ambient_nix" = true;
61         "$NIX_DIRENV_FALLBACK_NIX" = true;
62       };
63       prologue =
64         (writeText "prologue.sh" ''
65           NIX_DIRENV_FALLBACK_NIX=''${NIX_DIRENV_FALLBACK_NIX:-${lib.getExe nix}}
66         '').outPath;
67     };
68   };
70   meta = {
71     description = "Fast, persistent use_nix implementation for direnv";
72     homepage = "https://github.com/nix-community/nix-direnv";
73     license = lib.licenses.mit;
74     platforms = lib.platforms.unix;
75     maintainers = with lib.maintainers; [
76       mic92
77       bbenne10
78     ];
79   };