{ pkgs, inputs, config, lib, ... }:

let
  cfg = config.snowhawk.fish;
in
{
  options.snowhawk.fish = {
    enable = lib.mkEnableOption "fish";
  };

  config = lib.mkIf cfg.enable {
    programs.bash = {
      enable = true;
      initExtra = ''
        if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
        then
          shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
          exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
        fi
      '';
    };

    programs.fish = {
      enable = true;
      shellAbbrs = {
        copy = "xclip -sel clip";
      };
      interactiveShellInit =
        builtins.readFile "${inputs.fish_theme}/fish_prompt.fish" + "\n" +
        builtins.readFile ../fish/config.fish;
    };
  };
}