inputs@{ machine, ... }:
{
  imports = machine.program {
    name = "kitty";
    inherit inputs;
    requirements = [ "graphical" ];
    home-config =
      { pkgs, flakes, ... }:
      {
        home.packages = pkgs.custom.maple-fonts-pack;

        programs.kitty = {
          enable = true;
          font = {
            name = "Maple Mono NF";
            size = 11.0;
            package = pkgs.jetbrains-mono;
          };

          settings = {
            scrollback_lines = 20000;
            allow_hyperlinks = true;

            repaint_delay = 10;
            input_delay = 3;

            enable_audio_bell = false;
            update_check_interval = 0;

            initial_window_width = "95c";
            initial_window_height = "30c";
            remember_window_size = "no";

            draw_minimal_borders = false;
            hide_window_decorations = true;

            shell = "${pkgs.tmux}/bin/tmux";
            clipboard_control = "write-clipboard write-primary read-clipboard read-primary";

            foreground = "#fcfcfc";
            background = "#232627";
            linux_display_server = "auto";
          };

          keybindings = {
            "ctrl+f" =
              "launch --location=hsplit --allow-remote-control kitty +kitten ${flakes.kitty-search}/search.py @active-kitty-window-id";
            "ctrl+alt+r" = "load_config_file";
            "ctrl+shift+r" = "no_op";
            "super+`" = "no_op";
            "ctrl+EQUAL" = "change_font_size all +2.0";
            "ctrl+minus" = "change_font_size all -2.0";
            "ctrl+0" = "change_font_size all 0";
            # "ctrl+/" = "send_text all ";
            "super+~" = "no_op";

            # required for vim!!
            # terminals map ctrl+i to tab. I want them to do different things in vim.
            "ctrl+i" = "send_text all \\x01";
          };

          extraConfig = ''
            mouse_map left click ungrabbed no-op
          '';
        };
      };
  };
}
