diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2025-04-19 13:03:24 +0200 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2025-04-19 13:03:24 +0200 |
commit | 828f036e26f947f58e639b70301c984246bcf4c7 (patch) | |
tree | 200584814f5e6b89202321d579cad1b966d5d54f /overlays | |
parent | 3d577fd69bfe89a9b8497367fdc55d75174e34bd (diff) | |
download | nixos-828f036e26f947f58e639b70301c984246bcf4c7.tar nixos-828f036e26f947f58e639b70301c984246bcf4c7.tar.gz nixos-828f036e26f947f58e639b70301c984246bcf4c7.tar.bz2 nixos-828f036e26f947f58e639b70301c984246bcf4c7.tar.xz nixos-828f036e26f947f58e639b70301c984246bcf4c7.zip |
...
Diffstat (limited to 'overlays')
-rw-r--r-- | overlays/nix-direnv/default.nix | 53 | ||||
-rw-r--r-- | overlays/nix-direnv/static-nix.patch | 62 |
2 files changed, 115 insertions, 0 deletions
diff --git a/overlays/nix-direnv/default.nix b/overlays/nix-direnv/default.nix new file mode 100644 index 00000000..7c488e4e --- /dev/null +++ b/overlays/nix-direnv/default.nix | |||
@@ -0,0 +1,53 @@ | |||
1 | { final, prev, ... }: { | ||
2 | nix-direnv = prev.resholve.mkDerivation rec { | ||
3 | pname = "nix-direnv"; | ||
4 | version = "3.0.6"; | ||
5 | |||
6 | patches = [ | ||
7 | ./static-nix.patch | ||
8 | ]; | ||
9 | |||
10 | src = prev.fetchFromGitHub { | ||
11 | owner = "nix-community"; | ||
12 | repo = "nix-direnv"; | ||
13 | rev = version; | ||
14 | hash = "sha256-oNqhPqgQT92yxbKmcgX4F3e2yTUPyXYG7b2xQm3TvQw="; | ||
15 | }; | ||
16 | |||
17 | installPhase = '' | ||
18 | runHook preInstall | ||
19 | install -m400 -D direnvrc $out/share/nix-direnv/direnvrc | ||
20 | runHook postInstall | ||
21 | ''; | ||
22 | |||
23 | solutions = { | ||
24 | default = { | ||
25 | scripts = [ "share/nix-direnv/direnvrc" ]; | ||
26 | interpreter = "none"; | ||
27 | inputs = with final; [ coreutils nix-monitored ]; | ||
28 | fake = { | ||
29 | builtin = [ | ||
30 | "PATH_add" | ||
31 | "direnv_layout_dir" | ||
32 | "has" | ||
33 | "log_error" | ||
34 | "log_status" | ||
35 | "watch_file" | ||
36 | ]; | ||
37 | function = [ | ||
38 | # not really a function - this is in an else branch for macOS/homebrew that | ||
39 | # cannot be reached when built with nix | ||
40 | "shasum" | ||
41 | ]; | ||
42 | }; | ||
43 | keep = { | ||
44 | "$cmd" = true; | ||
45 | "$direnv" = true; | ||
46 | }; | ||
47 | execer = [ | ||
48 | "cannot:${prev.lib.getExe' final.nix-monitored "nix"}" | ||
49 | ]; | ||
50 | }; | ||
51 | }; | ||
52 | }; | ||
53 | } | ||
diff --git a/overlays/nix-direnv/static-nix.patch b/overlays/nix-direnv/static-nix.patch new file mode 100644 index 00000000..5de8193f --- /dev/null +++ b/overlays/nix-direnv/static-nix.patch | |||
@@ -0,0 +1,62 @@ | |||
1 | diff --git i/direnvrc w/direnvrc | ||
2 | index ddac0f5..fbcade6 100644 | ||
3 | --- i/direnvrc | ||
4 | +++ w/direnvrc | ||
5 | @@ -29,10 +29,8 @@ _nix_direnv_warning() { | ||
6 | |||
7 | _nix_direnv_error() { log_error "${_NIX_DIRENV_LOG_PREFIX}$*"; } | ||
8 | |||
9 | -_nix_direnv_nix="" | ||
10 | - | ||
11 | _nix() { | ||
12 | - ${_nix_direnv_nix} --extra-experimental-features "nix-command flakes" "$@" | ||
13 | + nix --extra-experimental-features "nix-command flakes" "$@" | ||
14 | } | ||
15 | |||
16 | _require_version() { | ||
17 | @@ -55,34 +53,6 @@ _require_cmd_version() { | ||
18 | _require_version "$cmd" "${BASH_REMATCH[1]}" "$required" | ||
19 | } | ||
20 | |||
21 | -_nix_direnv_resolve_nix() { | ||
22 | - local ambient_nix | ||
23 | - | ||
24 | - if ambient_nix=$(command -v nix); then | ||
25 | - if _require_cmd_version "${ambient_nix}" "${NIX_MIN_VERSION}"; then | ||
26 | - echo "${ambient_nix}" | ||
27 | - return 0 | ||
28 | - else | ||
29 | - _nix_direnv_warning "Nix version in PATH is too old, wanted ${NIX_MIN_VERSION}+, got $(${ambient_nix} --version), will attempt fallback" | ||
30 | - fi | ||
31 | - else | ||
32 | - _nix_direnv_warning "Could not find Nix in PATH, will attempt fallback" | ||
33 | - fi | ||
34 | - | ||
35 | - if [ -n "${NIX_DIRENV_FALLBACK_NIX}" ]; then | ||
36 | - if _require_cmd_version "${NIX_DIRENV_FALLBACK_NIX}" "${NIX_MIN_VERSION}"; then | ||
37 | - echo "${NIX_DIRENV_FALLBACK_NIX}" | ||
38 | - return 0 | ||
39 | - else | ||
40 | - _nix_direnv_error "Fallback Nix version is too old, wanted ${NIX_MIN_VERSION}+, got $(${NIX_DIRENV_FALLBACK_NIX} --version)" | ||
41 | - return 1 | ||
42 | - fi | ||
43 | - else | ||
44 | - _nix_direnv_error "Could not find fallback Nix binary, please add Nix to PATH or set NIX_DIRENV_FALLBACK_NIX" | ||
45 | - return 1 | ||
46 | - fi | ||
47 | -} | ||
48 | - | ||
49 | _nix_direnv_preflight() { | ||
50 | if [[ -z $direnv ]]; then | ||
51 | # shellcheck disable=2016 | ||
52 | @@ -102,10 +72,6 @@ _nix_direnv_preflight() { | ||
53 | fi | ||
54 | fi | ||
55 | |||
56 | - if ! _nix_direnv_nix=$(_nix_direnv_resolve_nix); then | ||
57 | - return 1 | ||
58 | - fi | ||
59 | - | ||
60 | local layout_dir | ||
61 | layout_dir=$(direnv_layout_dir) | ||
62 | |||