{
  pkgs,
  config,
  lib,
  ...
}:
with lib;
{
  options.components.terminal.direnv.enable = mkOption {
    type = lib.types.bool;
    default = config.components.terminal.enable;
  };
  config = mkIf (config.components.terminal.direnv.enable) {

    environment.systemPackages = [ pkgs.direnv ];

    home-manager.sharedModules = [
      {
        programs.direnv.enable = true;
        programs.git.ignores = [
          ".envrc"
          ".direnv"
        ];
      }
    ];

    programs.zsh.interactiveShellInit = ''
      eval "$(${pkgs.direnv}/bin/direnv hook zsh)"
    '';
    programs.bash.interactiveShellInit = ''
      eval "$(${pkgs.direnv}/bin/direnv hook bash)"
    '';
  };
}