{ 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 ''; }; }; }