{ lib, self, pkgs, config, osConfig, namespace, ... }: let inherit (lib) mkEnableOption types mkIf; inherit (self.lib) mkOpt; palette = (pkgs.lib.importJSON (config.catppuccin.sources.palette + "/palette.json")).${config.catppuccin.flavor}.colors; cfg = config.${namespace}.themes.catppuccin; in { options.${namespace}.themes.catppuccin = { enable = mkEnableOption "the Catppuccin theme, globally."; accent = mkOpt types.str "blue" "The accent colour to use."; flavor = mkOpt types.str "macchiato" "The flavor to use."; palette = mkOpt (lib.types.attrsOf lib.types.raw) palette "a reference to the current active Catppuccin palette."; }; config = mkIf cfg.enable { catppuccin = { enable = true; accent = cfg.accent; flavor = cfg.flavor; cursors.enable = true; cursors.accent = cfg.accent; cursors.flavor = cfg.flavor; }; ${namespace}.themes.catppuccin = { gtk.enable = mkIf osConfig.${namespace}.desktop.gnome.enable true; }; }; }