added new theme modules for customizing theme options across home profile

This commit is contained in:
Aly Raffauf 2024-05-04 20:43:51 -04:00
parent 0dfae7d065
commit 19809ea557

View file

@ -7,15 +7,125 @@
options = { options = {
alyraffauf.desktop.theme.enable = alyraffauf.desktop.theme.enable =
lib.mkEnableOption "GTK and Qt themes."; lib.mkEnableOption "GTK and Qt themes.";
alyraffauf.desktop.theme.gtk = {
name = lib.mkOption {
description = "GTK theme name.";
default = "Catppuccin-Frappe-Compact-Mauve-Dark";
type = lib.types.str;
};
package = lib.mkOption {
description = "GTK theme package.";
default = pkgs.catppuccin-gtk.override {
accents = ["mauve"];
size = "compact";
variant = "frappe";
tweaks = ["normal"];
};
type = lib.types.package;
};
};
alyraffauf.desktop.theme.iconTheme = {
name = lib.mkOption {
description = "Icon theme name.";
default = "Papirus-Dark";
type = lib.types.str;
};
package = lib.mkOption {
description = "Icon theme package.";
default = pkgs.catppuccin-papirus-folders.override {
flavor = "frappe";
accent = "mauve";
};
type = lib.types.package;
};
};
alyraffauf.desktop.theme.cursorTheme = {
name = lib.mkOption {
description = "Cursor theme name.";
default = "Catppuccin-Frappe-Dark-Cursors";
type = lib.types.str;
};
size = lib.mkOption {
description = "Cursor size.";
default = 24;
type = lib.types.int;
};
package = lib.mkOption {
description = "Cursor theme package.";
default = pkgs.catppuccin-cursors.frappeDark;
type = lib.types.package;
};
};
alyraffauf.desktop.theme.font = {
name = lib.mkOption {
description = "Font name.";
default = "NotoSansNerdFont-Regular";
type = lib.types.str;
};
size = lib.mkOption {
description = "Font size.";
default = 11;
type = lib.types.int;
};
package = lib.mkOption {
description = "Font package.";
default = pkgs.nerdfonts.override {fonts = ["Noto"];};
type = lib.types.package;
};
};
alyraffauf.desktop.theme.terminalFont = {
name = lib.mkOption {
description = "Font name.";
default = "NotoSansMNerdFont-Regular";
type = lib.types.str;
};
size = lib.mkOption {
description = "Font size.";
default = 11;
type = lib.types.int;
};
package = lib.mkOption {
description = "Font package.";
default = pkgs.nerdfonts.override {fonts = ["Noto"];};
type = lib.types.package;
};
};
alyraffauf.desktop.theme.colors = {
text = lib.mkOption {
description = "Text color.";
default = "#FAFAFA";
type = lib.types.str;
};
primary = lib.mkOption {
description = "Primary color.";
default = "#CA9EE6";
type = lib.types.str;
};
secondary = lib.mkOption {
description = "Secondary color.";
default = "#99D1DB";
type = lib.types.str;
};
inactive = lib.mkOption {
description = "Inactive color.";
default = "#626880";
type = lib.types.str;
};
shadow = lib.mkOption {
description = "Drop shadow color.";
default = "#1A1A1A";
type = lib.types.str;
};
};
}; };
config = lib.mkIf config.alyraffauf.desktop.theme.enable { config = lib.mkIf config.alyraffauf.desktop.theme.enable {
home.pointerCursor = { home.pointerCursor = {
gtk.enable = true; gtk.enable = true;
x11.enable = true; x11.enable = true;
package = pkgs.catppuccin-cursors.frappeDark; package = config.alyraffauf.desktop.theme.cursorTheme.package;
name = "Catppuccin-Frappe-Dark-Cursors"; name = config.alyraffauf.desktop.theme.cursorTheme.name;
size = 24; size = config.alyraffauf.desktop.theme.cursorTheme.size;
}; };
qt = { qt = {
@ -28,27 +138,19 @@
enable = true; enable = true;
theme = { theme = {
package = pkgs.catppuccin-gtk.override { package = config.alyraffauf.desktop.theme.gtk.package;
accents = ["mauve"]; name = config.alyraffauf.desktop.theme.gtk.name;
size = "compact";
variant = "frappe";
tweaks = ["normal"];
};
name = "Catppuccin-Frappe-Compact-Mauve-Dark";
}; };
iconTheme = { iconTheme = {
package = pkgs.catppuccin-papirus-folders.override { package = config.alyraffauf.desktop.theme.iconTheme.package;
flavor = "frappe"; name = config.alyraffauf.desktop.theme.iconTheme.name;
accent = "mauve";
};
name = "Papirus-Dark";
}; };
font = { font = {
name = "NotoSansNerdFont-Regular"; name = config.alyraffauf.desktop.theme.font.name;
package = pkgs.nerdfonts.override {fonts = ["Noto"];}; package = config.alyraffauf.desktop.theme.font.package;
size = 11; size = config.alyraffauf.desktop.theme.font.size;
}; };
gtk3.extraConfig = {gtk-application-prefer-dark-theme = 1;}; gtk3.extraConfig = {gtk-application-prefer-dark-theme = 1;};
@ -58,10 +160,10 @@
dconf.settings = { dconf.settings = {
"org/gnome/desktop/interface" = { "org/gnome/desktop/interface" = {
gtk-theme = "Catppuccin-Frappe-Compact-Mauve-Dark"; gtk-theme = config.alyraffauf.desktop.theme.gtk.name;
color-scheme = "prefer-dark"; color-scheme = "prefer-dark";
cursor-theme = "Catppuccin-Frappe-Dark-Cursors"; cursor-theme = config.alyraffauf.desktop.theme.cursorTheme.name;
cursor-size = 24; cursor-size = config.alyraffauf.desktop.theme.cursorTheme.size;
}; };
}; };
}; };