Files
homelab/hosts/terra/home/theme.nix
T
2026-09-18 20:39:06 +02:00

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}
'';
}