···
package = lib.mkPackageOption pkgs "direnv" { };
29
+
finalPackage = lib.mkOption {
30
+
type = lib.types.package;
32
+
description = "The wrapped direnv package.";
enableBashIntegration = enabledOption ''
···
config = lib.mkIf cfg.enable {
97
-
direnv.settings = lib.mkIf cfg.silent {
99
-
log_format = lib.mkDefault "-";
100
-
log_filter = lib.mkDefault "^$";
103
+
finalPackage = pkgs.symlinkJoin {
104
+
inherit (cfg.package) name;
105
+
paths = [ cfg.package ];
106
+
# direnv has a fish library which automatically sources direnv for some reason
108
+
rm -rf "$out/share/fish"
110
+
meta.mainProgram = "direnv";
112
+
settings = lib.mkIf cfg.silent {
114
+
log_format = lib.mkDefault "-";
115
+
log_filter = lib.mkDefault "^$";
zsh.interactiveShellInit = lib.mkIf cfg.enableZshIntegration ''
if ${lib.boolToString cfg.loadInNixShell} || printenv PATH | grep -vqc '/nix/store'; then
106
-
eval "$(${lib.getExe cfg.package} hook zsh)"
122
+
eval "$(${lib.getExe cfg.finalPackage} hook zsh)"
···
#$IN_NIX_SHELL for "nix-shell"
bash.interactiveShellInit = lib.mkIf cfg.enableBashIntegration ''
if ${lib.boolToString cfg.loadInNixShell} || [ -z "$IN_NIX_SHELL$NIX_GCROOT$(printenv PATH | grep '/nix/store')" ] ; then
114
-
eval "$(${lib.getExe cfg.package} hook bash)"
130
+
eval "$(${lib.getExe cfg.finalPackage} hook bash)"
fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration ''
if ${lib.boolToString cfg.loadInNixShell};
or printenv PATH | grep -vqc '/nix/store';
121
-
${lib.getExe cfg.package} hook fish | source
137
+
${lib.getExe cfg.finalPackage} hook fish | source
···
141
-
# direnv has a fish library which automatically sources direnv for some reason
142
-
# I don't see any harm in doing this if we're sourcing it with fish.interactiveShellInit
143
-
(pkgs.symlinkJoin {
144
-
inherit (cfg.package) name;
145
-
paths = [ cfg.package ];
146
-
nativeBuildInputs = [ pkgs.makeBinaryWrapper ];
148
-
wrapProgram "$out/bin/direnv" \
149
-
--set-default 'DIRENV_CONFIG' '/etc/direnv'
150
-
rm -rf "$out/share/fish"
160
+
variables.DIRENV_CONFIG = "/etc/direnv";
"direnv/direnv.toml" = lib.mkIf (cfg.settings != { }) {