aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/di/direnv/module.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-08-25 22:58:49 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-08-25 22:59:42 +0200
commitb17222c8a8ee904aa94254256e5fec6ed38027e7 (patch)
tree8f4f623293f3ba91b087574f459a03df641e0a7b /modules/by-name/di/direnv/module.nix
parentpkgs/fish-patched: Don't override `postPatch` (diff)
downloadnixos-config-b17222c8a8ee904aa94254256e5fec6ed38027e7.zip
modules/direnv: Consistently run `direnv export`
With the current integration, we never actually re-set a loaded dev shell (and thus potentially spam the shell with env diffs after every prompt).
Diffstat (limited to 'modules/by-name/di/direnv/module.nix')
-rw-r--r--modules/by-name/di/direnv/module.nix25
1 files changed, 8 insertions, 17 deletions
diff --git a/modules/by-name/di/direnv/module.nix b/modules/by-name/di/direnv/module.nix
index ad47a2a7..4a1a4768 100644
--- a/modules/by-name/di/direnv/module.nix
+++ b/modules/by-name/di/direnv/module.nix
@@ -35,6 +35,8 @@
pkgs.landrun
];
};
+
+ direnvPkg = lib.getExe direnvCfg.package;
in {
options.soispha.programs.direnv = {
enable = lib.mkEnableOption "direnv";
@@ -44,25 +46,14 @@ in {
soispha.programs.fish.integrations.direnv =
# fish
''
- function __direnv_export_eval
- ${lib.getExe direnvCfg.package} export fish | source;
- end
+ set --global SHOULD_SANDBOX_DIRENV
- if test -z "$NO_DIRENV_LOAD"
- function _direnv_hook
- if test -f ".env" -o -f ".envrc" -o -f ".nenvrc"
- # ${lib.getExe landrun-fish} --interactive --command='__direnv_export_eval'
- __direnv_export_eval
- end
- end
-
- function __direnv_on_prompt --on-event fish_prompt;
- _direnv_hook
- end
+ function _direnv_export_eval
+ ${direnvPkg} export fish | source
+ end
- function _direnv_on_preexec --on-event fish_preexec;
- _direnv_hook
- end
+ function _direnv_hook --on-event fish_preexec --on-variable PWD
+ _direnv_export_eval
end
'';