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