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

with lib;
with lib.my;
let cfg = config.modules.desktop.alacritty;
in {
  options.modules.desktop.alacritty = {
    enable = mkBoolOpt false;
  };
  config = mkIf cfg.enable {
    home-manager.users.${config.user.name} = {
      programs.alacritty = {
        enable = true;
        settings = {
          colors = {
            # (Gruvbox dark)
            primary = {
              background = "0x1d2021";
              foreground = "0xebdbb2";
            };
            normal = {
              black = "0x282828";
              red = "0xcc241d";
              green = "0x98971a";
              yellow = "0xd79921";
              blue = "0x458588";
              magenta = "0xb16286";
              cyan = "0x689d6a";
              white = "0xa89984";
            };
            bright = {
              black = "0x928374";
              red = "0xfb4934";
              green = "0xb8bb26";
              yellow = "0xfabd2f";
              blue = "0x83a598";
              magenta = "0xd3869b";
              cyan = "0x8ec07c";
              white = "0xebdbb2";
            };
          };
          window = {
            title = "Alacritty";
            padding = {
              x = 5;
              y = 5;
            };
          };
          scrolling.history = 65535;
          font.size = 8;
          key_bindings = [
            {
              key = "Up";
              mods = "Control";
              action = "IncreaseFontSize";
            }
            {
              key = "Down";
              mods = "Control";
              action = "DecreaseFontSize";
            }
          ];
        };
      };
    };
  };
}
