Loading nixos/modules/programs/direnv.nix +27 −20 Original line number Diff line number Diff line Loading @@ -26,6 +26,12 @@ in package = lib.mkPackageOption pkgs "direnv" { }; finalPackage = lib.mkOption { type = lib.types.package; readOnly = true; description = "The wrapped direnv package."; }; enableBashIntegration = enabledOption '' Bash integration ''; Loading Loading @@ -92,18 +98,28 @@ in }; config = lib.mkIf cfg.enable { programs = { direnv.settings = lib.mkIf cfg.silent { direnv = { finalPackage = pkgs.symlinkJoin { inherit (cfg.package) name; paths = [ cfg.package ]; # direnv has a fish library which automatically sources direnv for some reason postBuild = '' rm -rf "$out/share/fish" ''; meta.mainProgram = "direnv"; }; settings = lib.mkIf cfg.silent { global = { log_format = lib.mkDefault "-"; log_filter = lib.mkDefault "^$"; }; }; }; zsh.interactiveShellInit = lib.mkIf cfg.enableZshIntegration '' if ${lib.boolToString cfg.loadInNixShell} || printenv PATH | grep -vqc '/nix/store'; then eval "$(${lib.getExe cfg.package} hook zsh)" eval "$(${lib.getExe cfg.finalPackage} hook zsh)" fi ''; Loading @@ -111,14 +127,14 @@ in #$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 eval "$(${lib.getExe cfg.package} hook bash)" eval "$(${lib.getExe cfg.finalPackage} hook bash)" fi ''; fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration '' if ${lib.boolToString cfg.loadInNixShell}; or printenv PATH | grep -vqc '/nix/store'; ${lib.getExe cfg.package} hook fish | source ${lib.getExe cfg.finalPackage} hook fish | source end ''; Loading @@ -138,20 +154,11 @@ in environment = { systemPackages = [ # direnv has a fish library which automatically sources direnv for some reason # I don't see any harm in doing this if we're sourcing it with fish.interactiveShellInit (pkgs.symlinkJoin { inherit (cfg.package) name; paths = [ cfg.package ]; nativeBuildInputs = [ pkgs.makeBinaryWrapper ]; postBuild = '' wrapProgram "$out/bin/direnv" \ --set-default 'DIRENV_CONFIG' '/etc/direnv' rm -rf "$out/share/fish" ''; }) cfg.finalPackage ]; variables.DIRENV_CONFIG = "/etc/direnv"; etc = { "direnv/direnv.toml" = lib.mkIf (cfg.settings != { }) { source = format.generate "direnv.toml" cfg.settings; Loading Loading
nixos/modules/programs/direnv.nix +27 −20 Original line number Diff line number Diff line Loading @@ -26,6 +26,12 @@ in package = lib.mkPackageOption pkgs "direnv" { }; finalPackage = lib.mkOption { type = lib.types.package; readOnly = true; description = "The wrapped direnv package."; }; enableBashIntegration = enabledOption '' Bash integration ''; Loading Loading @@ -92,18 +98,28 @@ in }; config = lib.mkIf cfg.enable { programs = { direnv.settings = lib.mkIf cfg.silent { direnv = { finalPackage = pkgs.symlinkJoin { inherit (cfg.package) name; paths = [ cfg.package ]; # direnv has a fish library which automatically sources direnv for some reason postBuild = '' rm -rf "$out/share/fish" ''; meta.mainProgram = "direnv"; }; settings = lib.mkIf cfg.silent { global = { log_format = lib.mkDefault "-"; log_filter = lib.mkDefault "^$"; }; }; }; zsh.interactiveShellInit = lib.mkIf cfg.enableZshIntegration '' if ${lib.boolToString cfg.loadInNixShell} || printenv PATH | grep -vqc '/nix/store'; then eval "$(${lib.getExe cfg.package} hook zsh)" eval "$(${lib.getExe cfg.finalPackage} hook zsh)" fi ''; Loading @@ -111,14 +127,14 @@ in #$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 eval "$(${lib.getExe cfg.package} hook bash)" eval "$(${lib.getExe cfg.finalPackage} hook bash)" fi ''; fish.interactiveShellInit = lib.mkIf cfg.enableFishIntegration '' if ${lib.boolToString cfg.loadInNixShell}; or printenv PATH | grep -vqc '/nix/store'; ${lib.getExe cfg.package} hook fish | source ${lib.getExe cfg.finalPackage} hook fish | source end ''; Loading @@ -138,20 +154,11 @@ in environment = { systemPackages = [ # direnv has a fish library which automatically sources direnv for some reason # I don't see any harm in doing this if we're sourcing it with fish.interactiveShellInit (pkgs.symlinkJoin { inherit (cfg.package) name; paths = [ cfg.package ]; nativeBuildInputs = [ pkgs.makeBinaryWrapper ]; postBuild = '' wrapProgram "$out/bin/direnv" \ --set-default 'DIRENV_CONFIG' '/etc/direnv' rm -rf "$out/share/fish" ''; }) cfg.finalPackage ]; variables.DIRENV_CONFIG = "/etc/direnv"; etc = { "direnv/direnv.toml" = lib.mkIf (cfg.settings != { }) { source = format.generate "direnv.toml" cfg.settings; Loading