{ lib, config, ... }:
with lib;
let
  cfg = config.mjallen.programs.kitty;
  nord = import (lib.snowfall.fs.get-file "modules/home/desktop/theme/nord.nix");
in
{
  imports = [ ./options.nix ];

  config = mkIf cfg.enable {
    programs.kitty = {
      enable = true;
      shellIntegration.enableZshIntegration = true;

      font = {
        name = cfg.font.name;
        package = cfg.font.package;
        size = cfg.font.size;
      };

      settings = {
        bold_font = "auto";
        italic_font = "auto";
        bold_italic_font = "auto";
        mouse_hide_wait = "2.0";
        cursor_shape = "block";
        url_style = "dotted";
        confirm_os_window_close = "0";
        background_opacity = "0.85";

        # The basic colors
        foreground = nord.snowStorm.nord6;
        background = nord.polarNight.nord0;
        selection_foreground = nord.polarNight.nord0;
        selection_background = nord.aurora.nord15;

        # Cursor colors
        cursor = nord.aurora.nord15;
        cursor_text_color = nord.polarNight.nord0;

        # URL underline color when hovering with mouse
        url_color = nord.aurora.nord15;

        # Kitty window border colors
        active_border_color = nord.frost.nord10;
        inactive_border_color = nord.polarNight.nord1;
        bell_border_color = nord.aurora.nord13;

        # OS Window titlebar colors
        wayland_titlebar_color = nord.polarNight.nord0;
        macos_titlebar_color = nord.polarNight.nord0;

        # Tab bar colors
        active_tab_foreground = nord.polarNight.nord3;
        active_tab_background = nord.aurora.nord15;
        inactive_tab_foreground = nord.snowStorm.nord6;
        inactive_tab_background = nord.polarNight.nord1;
        tab_bar_background = nord.polarNight.nord3;

        # Colors for marks (marked text in the terminal)
        mark1_foreground = nord.polarNight.nord0;
        mark1_background = nord.frost.nord10;
        mark2_foreground = nord.polarNight.nord0;
        mark2_background = nord.aurora.nord15;
        mark3_foreground = nord.polarNight.nord0;
        mark3_background = nord.frost.nord8;

        # The 16 terminal colors

        # black
        color0 = nord.polarNight.nord0;

        # Autosuggestion
        color8 = nord.frost.nord10;

        # red
        color1 = nord.aurora.nord11;
        color9 = nord.aurora.nord11;

        # green
        color2 = nord.aurora.nord14;
        color10 = nord.aurora.nord14;

        # yellow
        color3 = nord.aurora.nord13;
        color11 = nord.aurora.nord13;

        # blue
        color4 = nord.frost.nord10;
        color12 = nord.frost.nord10;

        # magenta
        color5 = nord.aurora.nord15;
        color13 = nord.aurora.nord15;

        # cyan
        color6 = nord.frost.nord8;
        color14 = nord.frost.nord8;

        # white
        color7 = nord.snowStorm.nord5;
        color15 = nord.snowStorm.nord4;
      };
    };
  };
}
