{ 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; }; }; # Flatpak apps are sandboxed and can't see XDG_DATA_DIRS/nix-store theme # paths, so the portal-reported GTK theme / icon theme names resolve to # nothing inside the sandbox and they fall back to Adwaita. Flatpak # auto-exposes ~/.themes and ~/.icons read-only to every sandboxed app # specifically for this case. 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} ''; }