{ 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"; }; 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;}; cursor = { text = "CellBackground"; cursor = "CellForeground"; }; vi_mode_cursor = { text = "CellBackground"; cursor = "CellForeground"; }; search = { matches = { foreground = white; background = red; }; focused_match = { foreground = red; background = black; }; footer_bar = { foreground = black; background = white; }; }; hints = { start = { foreground = black; background = yellow; }; end = { foreground = yellow; background = black; }; selection = { text = "CellBackground"; background = "CellForeground"; }; normal = { inherit black red green yellow blue magenta cyan white; }; bright = { inherit brightBlack brightRed brightGreen brightYellow brightBlue brightMagenta brightCyan brightWhite ; }; }; }; cursor = { style = { shape = "Block"; blinking = "Off"; }; vi_mode_style = "Block"; }; }; }; }; }