151 lines
4.3 KiB
Nix
151 lines
4.3 KiB
Nix
{ lib, config, ... }:
|
|
|
|
let
|
|
cfg = config.local.programs.terminals.alacritty;
|
|
themeCfg = config.local.themes."${config.local.theme.name}";
|
|
in
|
|
{
|
|
options.local.programs.terminals.alacritty = with lib; {
|
|
enable = mkEnableOption "alacritty";
|
|
fontSize = mkOption {
|
|
type = types.number;
|
|
default = 11.0;
|
|
description = "Alacritty font size";
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
programs.alacritty = {
|
|
enable = true;
|
|
settings = {
|
|
window = {
|
|
padding = { x = 5; y = 5; };
|
|
decorations = "none";
|
|
dynamic_title = true;
|
|
};
|
|
|
|
scrolling = {
|
|
history = 10000;
|
|
multiplier = 3;
|
|
};
|
|
|
|
font =
|
|
let
|
|
family = "monospace";
|
|
mkFont = style: { inherit family style; };
|
|
in
|
|
{
|
|
normal = mkFont "Regular";
|
|
bold = mkFont "Bold";
|
|
italic = mkFont "Italic";
|
|
bold_italic = mkFont "Bold Italic";
|
|
|
|
size = cfg.fontSize;
|
|
};
|
|
|
|
colors = {
|
|
primary = {
|
|
background = themeCfg.window.background;
|
|
foreground = themeCfg.window.mainText;
|
|
|
|
dim_foreground = themeCfg.window.mainText;
|
|
bright_foreground = themeCfg.window.mainText;
|
|
};
|
|
|
|
cursor = {
|
|
text = themeCfg.window.cursorText;
|
|
cursor = themeCfg.window.cursor;
|
|
};
|
|
|
|
vi_mode_cursor = {
|
|
text = themeCfg.window.cursorText;
|
|
cursor = themeCfg.window.cursorVi;
|
|
};
|
|
|
|
search = {
|
|
matches = {
|
|
foreground = themeCfg.window.searchText;
|
|
background = themeCfg.window.search;
|
|
};
|
|
focused_match = {
|
|
foreground = themeCfg.window.searchText;
|
|
background = themeCfg.window.searchFocused;
|
|
};
|
|
footer_bar = {
|
|
foreground = themeCfg.window.footerText;
|
|
background = themeCfg.window.footer;
|
|
};
|
|
};
|
|
|
|
hints = {
|
|
start = {
|
|
foreground = themeCfg.window.hintsText;
|
|
background = themeCfg.window.hintsStart;
|
|
};
|
|
end = {
|
|
foreground = themeCfg.window.hintsText;
|
|
background = themeCfg.window.hintsEnd;
|
|
};
|
|
};
|
|
|
|
selection = {
|
|
text = themeCfg.window.selectionText;
|
|
background = themeCfg.window.selection;
|
|
};
|
|
|
|
normal = {
|
|
black = themeCfg.window.regular.color0;
|
|
red = themeCfg.window.regular.color1;
|
|
green = themeCfg.window.regular.color2;
|
|
yellow = themeCfg.window.regular.color3;
|
|
blue = themeCfg.window.regular.color4;
|
|
magenta = themeCfg.window.regular.color5;
|
|
cyan = themeCfg.window.regular.color6;
|
|
white = themeCfg.window.regular.color7;
|
|
};
|
|
|
|
bright = {
|
|
black = themeCfg.window.bold.color8;
|
|
red = themeCfg.window.bold.color9;
|
|
green = themeCfg.window.bold.color10;
|
|
yellow = themeCfg.window.bold.color11;
|
|
blue = themeCfg.window.bold.color12;
|
|
magenta = themeCfg.window.bold.color13;
|
|
cyan = themeCfg.window.bold.color14;
|
|
white = themeCfg.window.bold.color15;
|
|
};
|
|
|
|
dim = {
|
|
black = themeCfg.window.regular.color0;
|
|
red = themeCfg.window.regular.color1;
|
|
green = themeCfg.window.regular.color2;
|
|
yellow = themeCfg.window.regular.color3;
|
|
blue = themeCfg.window.regular.color4;
|
|
magenta = themeCfg.window.regular.color5;
|
|
cyan = themeCfg.window.regular.color6;
|
|
white = themeCfg.window.regular.color7;
|
|
};
|
|
|
|
indexed_colors = [
|
|
{
|
|
index = 16;
|
|
color = themeCfg.window.extended.color16;
|
|
}
|
|
{
|
|
index = 17;
|
|
color = themeCfg.window.extended.color17;
|
|
}
|
|
{
|
|
index = 18;
|
|
color = themeCfg.window.extended.color18;
|
|
}
|
|
{
|
|
index = 19;
|
|
color = themeCfg.window.extended.color19;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|