{ config, lib, pkgs, ... }: with lib; let cfg = config.mjallen.programs.hyprland; # Pull from global theme options themeSize = "standard"; # "standard" | "compact" themeAccent = "default"; # "default" | ... | "all" themeTweak = "normal"; # "normal" | "rimless" | "float" | "black" themeColor = "dark"; # "light" | "dark" iconThemeVariant = "default"; # "default" | ... | "all" iconScheme = "nord"; # "default" | "nord" | "dracula" | ... # Cursor cursorTheme = "macOS"; cursorThemePkg = pkgs.apple-cursor; cursorSize = 24; # GTK gtkTheme = "Colloid-dark-standard"; gtkThemePkg = pkgs.colloid-gtk-theme.override { sizeVariants = [ themeSize ]; colorVariants = [ themeColor ]; themeVariants = [ themeAccent ]; tweaks = [ themeTweak ]; }; # Icons iconTheme = "Colloid-nord-dark"; 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; }; }; }; }