From 19809ea5570d0df5dd2e26740ed1ee792499e39c Mon Sep 17 00:00:00 2001 From: Aly Raffauf Date: Sat, 4 May 2024 20:43:51 -0400 Subject: [PATCH] added new theme modules for customizing theme options across home profile --- homeManagerModules/desktop/theme.nix | 144 +++++++++++++++++++++++---- 1 file changed, 123 insertions(+), 21 deletions(-) diff --git a/homeManagerModules/desktop/theme.nix b/homeManagerModules/desktop/theme.nix index e9a75d33..f69060fa 100644 --- a/homeManagerModules/desktop/theme.nix +++ b/homeManagerModules/desktop/theme.nix @@ -7,15 +7,125 @@ options = { alyraffauf.desktop.theme.enable = 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 { home.pointerCursor = { gtk.enable = true; x11.enable = true; - package = pkgs.catppuccin-cursors.frappeDark; - name = "Catppuccin-Frappe-Dark-Cursors"; - size = 24; + package = config.alyraffauf.desktop.theme.cursorTheme.package; + name = config.alyraffauf.desktop.theme.cursorTheme.name; + size = config.alyraffauf.desktop.theme.cursorTheme.size; }; qt = { @@ -28,27 +138,19 @@ enable = true; theme = { - package = pkgs.catppuccin-gtk.override { - accents = ["mauve"]; - size = "compact"; - variant = "frappe"; - tweaks = ["normal"]; - }; - name = "Catppuccin-Frappe-Compact-Mauve-Dark"; + package = config.alyraffauf.desktop.theme.gtk.package; + name = config.alyraffauf.desktop.theme.gtk.name; }; iconTheme = { - package = pkgs.catppuccin-papirus-folders.override { - flavor = "frappe"; - accent = "mauve"; - }; - name = "Papirus-Dark"; + package = config.alyraffauf.desktop.theme.iconTheme.package; + name = config.alyraffauf.desktop.theme.iconTheme.name; }; font = { - name = "NotoSansNerdFont-Regular"; - package = pkgs.nerdfonts.override {fonts = ["Noto"];}; - size = 11; + name = config.alyraffauf.desktop.theme.font.name; + package = config.alyraffauf.desktop.theme.font.package; + size = config.alyraffauf.desktop.theme.font.size; }; gtk3.extraConfig = {gtk-application-prefer-dark-theme = 1;}; @@ -58,10 +160,10 @@ dconf.settings = { "org/gnome/desktop/interface" = { - gtk-theme = "Catppuccin-Frappe-Compact-Mauve-Dark"; + gtk-theme = config.alyraffauf.desktop.theme.gtk.name; color-scheme = "prefer-dark"; - cursor-theme = "Catppuccin-Frappe-Dark-Cursors"; - cursor-size = 24; + cursor-theme = config.alyraffauf.desktop.theme.cursorTheme.name; + cursor-size = config.alyraffauf.desktop.theme.cursorTheme.size; }; }; };