{ config, lib, ... }: with lib; let cfg = config.nixfiles.modules.alacritty; in { options.nixfiles.modules.alacritty.enable = mkEnableOption "Alacritty terminal emulator"; config = mkIf cfg.enable { hm.programs.alacritty = { enable = true; settings = with config.nixfiles.modules; { window = { padding = with config.fontScheme.monospaceFont; { x = size; y = size; }; dynamic_padding = false; decorations = "Full"; startup_mode = "Maximized"; }; font = with config.fontScheme.monospaceFont; { normal = { inherit family; style = "Regular"; }; bold = { inherit family; style = "Bold"; }; italic = { inherit family; style = "Italic"; }; bold_italic = { inherit family; style = "Bold Italic"; }; inherit size; }; colors = with config.colourScheme; { primary = { inherit background foreground; dim_foreground = "None"; bright_foreground = "None"; }; cursor = { text = "CellBackground"; cursor = "CellForeground"; }; vi_mode_cursor = { text = "CellBackground"; cursor = "CellForeground"; }; search = { matches = { foreground = white; background = red; }; focused_match = { foreground = red; background = black; }; }; hints = { start = { foreground = black; background = yellow; }; end = { foreground = yellow; background = black; }; }; line_indicator = { foreground = "None"; background = "None"; }; footer_bar = { foreground = black; background = white; }; selection = { text = "CellBackground"; background = "CellForeground"; }; normal = { inherit black red green yellow blue magenta cyan white ; }; bright = { black = brightBlack; red = brightRed; green = brightGreen; yellow = brightYellow; blue = brightBlue; magenta = brightMagenta; cyan = brightCyan; white = brightWhite; }; }; selection.save_to_clipboard = true; cursor = { style = { shape = "Block"; blinking = "On"; }; vi_mode_style = { shape = "Block"; blinking = "Off"; }; }; }; }; }; }