{ 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; }; }; # The cursor theme. XCURSOR_THEME alone is not enough for Steam: the client # UI (steamwebhelper) runs inside a pressure-vessel container that rebuilds # /etc, so the /etc/profiles/per-user/darman/share/icons entry of # XCURSOR_PATH does not exist in there and libXcursor finds no theme by # that name — it falls back to the built-in core X11 cursor. $HOME and # /nix are bind-mounted into the container, so the ~/.icons symlink that # `dotIcons` (on by default) drops does resolve. Same class of problem as # the ~/.themes/~/.icons flatpak workaround above. home.pointerCursor = { name = "Bibata-Modern-Classic"; package = pkgs.bibata-cursors; size = 24; gtk.enable = true; hyprcursor.enable = true; }; # 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} ''; }