{ pkgs, ... }:

{
    programs.alacritty = {
        enable = true;
        settings = {
            scrolling.history = 10000;
            window = {
                dynamic_padding = true;
                dynamic_title = true;
                opacity = 0.3;
            };
            env = {
                TERM = "xterm-256color";
            };
            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 = "FiraCode Nerd Font";
                    style = "Bold";
                };
                bold_italic = {
                    family = "FiraCode Nerd Font";
                    style = "Bold Italic";
                };
                italic = {
                    family = "FiraCode Nerd Font";
                    style = "Italic";
                };
                normal = {
                    family = "FiraCode Nerd Font";
                    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";
                }
            ];
        };
    };
}