{ 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; }; gtk = { package = mkOption { type = with types; package; default = (pkgs.catppuccin-gtk.overrideAttrs { src = pkgs.fetchFromGitHub { owner = "catppuccin"; repo = "gtk"; rev = "v1.0.3"; fetchSubmodules = true; hash = "sha256-q5/VcFsm3vNEw55zq/vcM11eo456SYE5TQA3g2VQjGc="; }; postUnpack = ""; }).override { accents = [ "pink" ]; size = "compact"; #tweaks = [ "rimless" "black" ]; variant = "mocha"; }; description = "catppuccin gtk theme package"; }; name = mkOption { type = with types; str; default = "catppuccin-mocha-pink-compact"; description = "name of catppuccin gtk theme"; }; }; cursor = { package = mkOption { type = with types; package; default = pkgs.catppuccin-cursors.mochaDark; description = "catppuccin cursor theme package"; }; name = mkOption { type = with types; str; default = "catppuccin-mocha-dark-cursors"; description = "name of catppuccin cursor theme"; }; }; }; config = { users.homeModules = [ # this module passes catppuccin configuration to home-manager { passthrough.catppuccin = cfg; } ]; catppuccin.enable = cfg.enable; # gtk and cursor themes environment.systemPackages = with cfg; mkIf enable [ gtk.package cursor.package ]; # override greetd theme programs.regreet = mkIf cfg.enable { theme = { inherit (cfg.gtk) name package; }; cursorTheme = { inherit (cfg.cursor) name package; }; settings = { background.path = ./solid.png; }; }; }; }