88 lines
2.3 KiB
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
|
|
'';
|
|
};
|
|
};
|
|
}
|