{ lib, osConfig, ... }: let inherit (lib) mapAttrs mkIf optionalAttrs removePrefix; styleCfg = osConfig.local.style; mkGhosttyTheme = palette: let colors = mapAttrs (_: value: removePrefix "#" value) palette; in { palette = [ "0=#${colors.base00}" "1=#${colors.base08}" "2=#${colors.base0B}" "3=#${colors.base0A}" "4=#${colors.base0D}" "5=#${colors.base0E}" "6=#${colors.base0C}" "7=#${colors.base05}" "8=#${colors.base02}" "9=#${colors.base08}" "10=#${colors.base0B}" "11=#${colors.base0A}" "12=#${colors.base0D}" "13=#${colors.base0E}" "14=#${colors.base0C}" "15=#${colors.base07}" "16=#${colors.base09}" "17=#${colors.base0F}" "18=#${colors.base01}" "19=#${colors.base02}" "20=#${colors.base04}" "21=#${colors.base06}" ]; background = colors.base00; foreground = colors.base05; cursor-color = colors.base06; selection-background = colors.base02; selection-foreground = colors.base05; }; in { config = lib.mkIf osConfig.local.profiles.desktop.enable { programs.ghostty = lib.mkMerge [ { enable = true; } (optionalAttrs styleCfg.enable { settings.theme = "base16"; themes.base16 = mkIf styleCfg.enable (mkGhosttyTheme styleCfg.scheme.palette); }) ]; }; }