{ config, lib, pkgs, mjallenThemeComputed, ... }: with lib; let cfg = config.mjallen.programs.hyprland; # Pull from global theme options themeSize = config.mjallen.theme.gtk.size; # "standard" | "compact" themeAccent = config.mjallen.theme.gtk.accent; # "default" | ... | "all" themeTweak = config.mjallen.theme.gtk.tweak; # "normal" | "rimless" | "float" | "black" themeColor = config.mjallen.theme.gtk.color; # "light" | "dark" iconThemeVariant = config.mjallen.theme.icons.variant; # "default" | ... | "all" iconScheme = config.mjallen.theme.icons.scheme; # "default" | "nord" | "dracula" | ... # Cursor cursorTheme = "macOS"; cursorThemePkg = pkgs.apple-cursor; cursorSize = 24; # GTK gtkTheme = mjallenThemeComputed.gtkTheme; gtkThemePkg = pkgs.colloid-gtk-theme.override { sizeVariants = [ themeSize ]; colorVariants = [ themeColor ]; themeVariants = [ themeAccent ]; tweaks = [ themeTweak ]; }; # Icons iconTheme = mjallenThemeComputed.iconTheme; iconThemePkg = pkgs.colloid-icon-theme.override { schemeVariants = [ iconScheme ]; colorVariants = [ iconThemeVariant ]; }; # Fonts fontName = "JetBrainsMono NFM"; fontPackage = pkgs.nerd-fonts.jetbrains-mono; fontSize = 12; in { config = mkIf cfg.enable { home = { pointerCursor = { gtk.enable = true; package = cursorThemePkg; name = cursorTheme; size = cursorSize; }; }; dconf = { enable = true; settings = { "org/gnome/desktop/interface".color-scheme = mkForce "prefer-dark"; "org/gnome/desktop/interface".cursor-theme = cursorTheme; "org/gnome/desktop/interface".gtk-theme = gtkTheme; "org/gnome/desktop/interface".icon-theme = iconTheme; }; }; gtk = { enable = true; cursorTheme = { name = cursorTheme; package = cursorThemePkg; }; theme = { name = gtkTheme; package = gtkThemePkg; }; iconTheme = { name = iconTheme; package = iconThemePkg; }; gtk3.extraConfig = { gtk-application-prefer-dark-theme = true; }; gtk4.extraConfig = { gtk-application-prefer-dark-theme = true; }; font = { name = mkDefault fontName; package = mkDefault fontPackage; size = mkDefault fontSize; }; }; }; }