nixos/direnv: fix silent option... again (#402399)

authored by

Ramses and committed by
GitHub
6f9a8cf2 ca74454a

+27 -20
+27 -20
nixos/modules/programs/direnv.nix
··· 26 26 27 27 package = lib.mkPackageOption pkgs "direnv" { }; 28 28 29 + finalPackage = lib.mkOption { 30 + type = lib.types.package; 31 + readOnly = true; 32 + description = "The wrapped direnv package."; 33 + }; 34 + 29 35 enableBashIntegration = enabledOption '' 30 36 Bash integration 31 37 ''; ··· 92 98 }; 93 99 94 100 config = lib.mkIf cfg.enable { 95 - 96 101 programs = { 97 - direnv.settings = lib.mkIf cfg.silent { 98 - global = { 99 - log_format = lib.mkDefault "-"; 100 - log_filter = lib.mkDefault "^$"; 102 + direnv = { 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 107 + postBuild = '' 108 + rm -rf "$out/share/fish" 109 + ''; 110 + meta.mainProgram = "direnv"; 111 + }; 112 + settings = lib.mkIf cfg.silent { 113 + global = { 114 + log_format = lib.mkDefault "-"; 115 + log_filter = lib.mkDefault "^$"; 116 + }; 101 117 }; 102 118 }; 103 119 104 120 zsh.interactiveShellInit = lib.mkIf cfg.enableZshIntegration '' 105 121 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)" 107 123 fi 108 124 ''; 109 125 ··· 111 127 #$IN_NIX_SHELL for "nix-shell" 112 128 bash.interactiveShellInit = lib.mkIf cfg.enableBashIntegration '' 113 129 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)" 115 131 fi 116 132 ''; 117 133 118 134 fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration '' 119 135 if ${lib.boolToString cfg.loadInNixShell}; 120 136 or printenv PATH | grep -vqc '/nix/store'; 121 - ${lib.getExe cfg.package} hook fish | source 137 + ${lib.getExe cfg.finalPackage} hook fish | source 122 138 end 123 139 ''; 124 140 ··· 138 154 139 155 environment = { 140 156 systemPackages = [ 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 ]; 147 - postBuild = '' 148 - wrapProgram "$out/bin/direnv" \ 149 - --set-default 'DIRENV_CONFIG' '/etc/direnv' 150 - rm -rf "$out/share/fish" 151 - ''; 152 - }) 157 + cfg.finalPackage 153 158 ]; 159 + 160 + variables.DIRENV_CONFIG = "/etc/direnv"; 154 161 155 162 etc = { 156 163 "direnv/direnv.toml" = lib.mkIf (cfg.settings != { }) {