{ pkgs, ... }:

{
  programs.alacritty = {
    enable = true;
    settings = {
      scrolling.history = 10000;
      window = {
        dynamic_padding = true;
        dynamic_title = true;
        opacity = 0.3;
      };
      colors = {
        bright = {
          black = "#555556";
          blue = "#00afff";
          cyan = "#50cdfe";
          green = "#b0e05e";
          magenta = "#af87ff";
          red = "#f5669c";
          white = "#ffffff";
          yellow = "#fef26c";
        };
        normal = {
          black = "#121213";
          blue = "#0f7fcf";
          cyan = "#42a7cf";
          green = "#97e123";
          magenta = "#8700ff";
          red = "#fa2573";
          white = "#bbbbbb";
          yellow = "#dfd460";
        };
        primary = {
          background = "#000011";
          foreground = "#F8F8F2";
        };
      };
      font = {
        size = pkgs.lib.mkDefault 15;
        bold = {
          family = "Iosevka Extended";
          style = "Bold";
        };
        bold_italic = {
          family = "Iosevka Extended";
          style = "Bold Italic";
        };
        italic = {
          family = "Iosevka Extended";
          style = "Italic";
        };
        normal = {
          family = "Iosevka Extended";
          style = "Regular";
        };
      };
      keyboard.bindings = [
        {
          action = "ToggleFullscreen";
          key = "F11";
        }
        {
          action = "ToggleViMode";
          key = "Escape";
          mode = "Vi";
        }
        {
          action = "ScrollHalfPageUp";
          key = "E";
          mode = "Vi";
          mods = "Control";
        }
        {
          key = "F";
          mods = "Control|Shift";
          action = "ReceiveChar";
        }
        {
          chars = "u001B[72;6u";
          key = "H";
          mods = "Control|Shift";
        }
        {
          chars = "u001B[74;6u";
          key = "J";
          mods = "Control|Shift";
        }
        {
          chars = "u001B[75;6u";
          key = "K";
          mods = "Control|Shift";
        }
        {
          chars = "u001B[76;6u";
          key = "L";
          mods = "Control|Shift";
        }
        {
          chars = "u001B[105;5u";
          key = "I";
          mods = "Control";
        }
        {
          chars = "u001B[46;5u";
          key = "Period";
          mods = "Control";
        }
        {
          chars = "u001B[44;5u";
          key = "Comma";
          mods = "Control";
        }
        {
          chars = "u001B[59;5u";
          key = "Semicolon";
          mods = "Control";
        }
        {
          chars = "u001B[13;2u";
          key = "Return";
          mods = "Shift";
        }
      ];
    };
  };
}