Unverified Commit 487d1383 authored by Gerg-L's avatar Gerg-L
Browse files

nixos/direnv: fix silent option... again

parent f771eb40
Loading
Loading
Loading
Loading
+27 −20
Original line number Diff line number Diff line
@@ -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
    '';
@@ -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
      '';

@@ -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
      '';

@@ -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;