87 lines
2.9 KiB
Nix
87 lines
2.9 KiB
Nix
{ 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}
|
|
'';
|
|
}
|