{ pkgs, ... }: # Global Dracula theming (GTK + Qt) let azureGlassyDarkIcons = pkgs.callPackage ../../../pkgs/azure-glassy-dark-icons.nix { }; amyDarkIcons = pkgs.callPackage ../../../pkgs/amy-dark-icons.nix { }; slotBeautyDarkIcons = pkgs.callPackage ../../../pkgs/slot-beauty-dark-icons.nix { }; iconTheme = "Amy-Dark-Icons"; iconThemePackage = amyDarkIcons; iconThemeFolder = "${iconThemePackage}/share/icons/${iconTheme}"; in { gtk = { enable = true; theme = { name = "Dracula"; package = pkgs.dracula-theme; }; iconTheme = { name = iconTheme; package = iconThemePackage; }; }; # XCURSOR_THEME alone isn't enough for Steam: steamwebhelper runs inside a # pressure-vessel container with its own /etc, so XCURSOR_PATH doesn't # resolve there and it falls back to the core X11 cursor. $HOME and /nix are # bind-mounted in though, so the ~/.icons symlink `dotIcons` drops still # resolves — same fix as the flatpak workaround below. home.pointerCursor = { name = "Bibata-Modern-Classic"; package = pkgs.bibata-cursors; size = 24; gtk.enable = true; hyprcursor.enable = true; }; # Flatpak apps can't see XDG_DATA_DIRS/nix-store theme paths, so the # portal-reported theme names resolve to nothing and fall back to Adwaita; # Flatpak auto-exposes ~/.themes and ~/.icons read-only as the workaround. home.file.".themes/Dracula".source = "${pkgs.dracula-theme}/share/themes/Dracula"; home.file.".icons/${iconTheme}".source = iconThemeFolder; dconf.settings."org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; gtk-theme = "Dracula"; icon-theme = iconTheme; }; # "qtct" (qt5ct/qt6ct) instead of "kde" avoids pulling in # kdePackages.systemsettings just for the platform-theme plugin — kvantum # itself carries the Dracula colors, qt5ct/qt6ct just need to be told to # use it as the style. qt = { enable = true; platformTheme.name = "qtct"; style.name = "kvantum"; }; xdg.configFile."Kvantum/kvantum.kvconfig".text = '' [General] theme=Dracula ''; xdg.configFile."Kvantum/Dracula".source = "${pkgs.dracula-theme}/share/Kvantum/Dracula"; # Quickshell's IconImage/Quickshell.iconPath() resolves icons through the # Qt platform theme, not GTK — so the app-launcher grid needs the icon # theme set HERE (qt5ct/qt6ct), separately from the GTK dconf key above. xdg.configFile."qt5ct/qt5ct.conf".text = '' [Appearance] style=kvantum icon_theme=${iconTheme} ''; xdg.configFile."qt6ct/qt6ct.conf".text = '' [Appearance] style=kvantum icon_theme=${iconTheme} ''; }