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/nix-direnv | |
| 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/nix-direnv')
| -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 | |||
