{ pkgs , lib , config , ... }: with lib; let gui = with config.global.gpu; enable && session; cfg = config.home.catppuccin; in { options.home.catppuccin = { enable = mkEnableOption "catppuccin colour scheme" // { default = gui; }; sway = mkOption { type = with types; str; default = "frappe"; description = "colour palette used in sway"; }; gtk = { package = mkOption { type = with types; package; default = pkgs.catppuccin-gtk.override { accents = [ "pink" ]; size = "compact"; #tweaks = [ "rimless" "black" ]; variant = "frappe"; }; description = "catppuccin gtk theme package"; }; name = mkOption { type = with types; str; default = "Catppuccin-Frappe-Compact-Pink-Dark"; description = "name of catppuccin gtk theme"; }; }; cursor = { package = mkOption { type = with types; package; default = pkgs.catppuccin-cursors.frappeDark; description = "catppuccin cursor theme package"; }; name = mkOption { type = with types; str; default = "Catppuccin-Frappe-Dark-Cursors"; description = "name of catppuccin cursor theme"; }; }; }; config = { users.homeModules = [ # this module passes catppuccin configuration to home-manager { passthrough.catppuccin = cfg; } ]; # gtk and cursor themes environment.systemPackages = with cfg; mkIf cfg.enable [ gtk.package cursor.package ]; # override greetd theme programs.regreet = mkIf cfg.enable { settings = { background.path = ./solid.png; GTK = { theme_name = cfg.gtk.name; cursor_theme_name = cfg.cursor.name; }; }; }; }; }