system/modules/home-manager/programs/terminals/wezterm.nix

71 lines
2.2 KiB
Nix

{ lib, config, ... }:
let
cfg = config.local.programs.terminals.wezterm;
themeCfg = config.local.themes."${config.local.theme.name}";
in
{
options.local.programs.terminals.wezterm = with lib; {
enable = mkEnableOption "wezterm";
fontSize = mkOption {
type = types.number;
default = 11.0;
description = "Wezterm font size";
};
};
config = lib.mkIf cfg.enable {
programs.wezterm = {
enable = true;
colorSchemes = {
myCoolTheme = {
ansi = [
themeCfg.window.regular.color0
themeCfg.window.regular.color1
themeCfg.window.regular.color2
themeCfg.window.regular.color3
themeCfg.window.regular.color4
themeCfg.window.regular.color5
themeCfg.window.regular.color6
themeCfg.window.regular.color7
];
brights = [
themeCfg.window.bold.color8
themeCfg.window.bold.color9
themeCfg.window.bold.color10
themeCfg.window.bold.color11
themeCfg.window.bold.color12
themeCfg.window.bold.color13
themeCfg.window.bold.color14
themeCfg.window.bold.color15
];
indexed = {
"16" = themeCfg.window.extended.color16;
"17" = themeCfg.window.extended.color17;
"18" = themeCfg.window.extended.color18;
"19" = themeCfg.window.extended.color19;
};
background = themeCfg.window.background;
foreground = themeCfg.window.mainText;
cursor_bg = themeCfg.window.cursor;
cursor_border = themeCfg.window.cursor;
cursor_fg = themeCfg.window.cursorText;
selection_bg = themeCfg.window.selection;
selection_fg = themeCfg.window.selectionText;
};
};
extraConfig = ''
return {
font = wezterm.font("monospace"),
font_size = ${toString cfg.fontSize},
front_end = "WebGpu",
color_scheme = "myCoolTheme",
hide_tab_bar_if_only_one_tab = true,
-- https://github.com/wez/wezterm/issues/4483
enable_wayland = false,
warn_about_missing_glyphs = false
}
'';
};
};
}