# Documentation is available at:
# - https://ghostty.org/docs/config/reference
# - `man 5 ghostty`
{ mkTarget, pkgs, ... }:
mkTarget {
  config = [
    (
      { fonts }:
      {
        programs.ghostty.settings = {
          font-family = [
            fonts.monospace.name
            fonts.emoji.name
          ];

          # Ghostty font-size is specified in points (pt) on all platforms.
          # Ghostty's default DPI is 96 on Linux and 72 on macOS.
          # fonts.sizes.terminal is in pt size so no changes on Linux are needed,
          # but to match visual size on macOS we scale it by 4/3 = 96/72.
          font-size =
            if pkgs.stdenv.hostPlatform.isDarwin then
              fonts.sizes.terminal * 4.0 / 3.0
            else
              fonts.sizes.terminal;
        };
      }
    )
    (
      { opacity }:
      {
        programs.ghostty.settings = {
          background-opacity = opacity.terminal;
        };
      }
    )
    (
      { colors }:
      {
        programs.ghostty = {
          settings.theme = "stylix";
          themes.stylix = {
            background = colors.base00;
            foreground = colors.base05;
            cursor-color = colors.base05;
            selection-background = colors.base02;
            selection-foreground = colors.base05;

            palette = with colors.withHashtag; [
              "0=${base00}"
              "1=${base08}"
              "2=${base0B}"
              "3=${base0A}"
              "4=${base0D}"
              "5=${base0E}"
              "6=${base0C}"
              "7=${base05}"
              "8=${base03}"
              "9=${base08}"
              "10=${base0B}"
              "11=${base0A}"
              "12=${base0D}"
              "13=${base0E}"
              "14=${base0C}"
              "15=${base07}"
            ];
          };
        };
      }
    )
  ];
}
