{ lib, config, pkgs, ... }: let inherit (lib) mkEnableOption mkIf; cfg = config.marleyos.programs.wezterm; inherit (config.marleyos.theme) colors; isGenericLinux = config.targets.genericLinux.enable; in { options.marleyos.programs.wezterm.enable = mkEnableOption "wezterm"; config = mkIf cfg.enable { programs.wezterm = { enable = true; # Non-NixOS Linux systems don't have proper GPU integration, so we # unfortunately need to use the native package manager version. package = mkIf isGenericLinux 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 = 11.0 return config ''; }; }; }