marleyos/modules/home/programs/wezterm/default.nix

88 lines
2.3 KiB
Nix

{
lib,
config,
system,
pkgs,
...
}:
let
inherit (lib) mkEnableOption mkIf;
inherit (lib.snowfall.system) is-darwin;
cfg = config.marleyos.programs.wezterm;
inherit (config.marleyos.theme) colors;
isGenericLinux = config.targets.genericLinux.enable;
isNotNixOS = isGenericLinux || (is-darwin system);
in
{
options.marleyos.programs.wezterm.enable = mkEnableOption "wezterm";
config = mkIf cfg.enable {
programs.wezterm = {
enable = true;
# Generic linux: NixGL makes Wezterm shit the bed for some reason.
# macOS: Prefer brew cask so a proper Applications shortcut is made.
package = mkIf isNotNixOS pkgs.emptyDirectory;
# TODO: create `local config` & return it seperately, so other modules can
# insert config in the middle
extraConfig =
let
# TODO: Set this in marleyos.theme
fonts = config.fonts.fontconfig.defaultFonts.monospace;
in
# lua
''
local config = wezterm.config_builder()
config.enable_tab_bar = false
config.color_scheme = "${colors.base}"
config.font = wezterm.font_with_fallback({
{
family = "Maple Mono NF",
-- TODO: Set this in marleyos.theme
harfbuzz_features = {
"cv02",
"ss01",
"ss02",
"ss03",
"ss04",
"ss05",
}
},
${toString (map (font: "{ family = \"${font}\" },") fonts)}
{ family = "FairiesevkaTerm Nerd Font Mono" },
{
family = "FiraCode Nerd Font",
harfbuzz_features = {
"cv02",
"cv06",
"ss01",
"cv14",
"onum",
"ss04",
"cv18",
"cv31",
"cv30",
"cv25",
"cv26",
"cv32",
"ss06",
"ss07",
},
},
{ family = "Apple Color Emoji" },
})
-- TODO: on mairley this should be set to 14.0
config.font_size = ${if (is-darwin system) then "14.0" else "11.0"}
return config
'';
};
};
}