1{ lib, config, pkgs, ... } @ inputs:
2
3with lib;
4let
5 inherit (import ../../lib/theme.nix inputs) cursorTheme defaultFont iconTheme gtkTheme kvantumTheme;
6 cfg = config.modules.desktop;
7in {
8 options.modules.desktop.theme = {
9 enable = mkOption {
10 default = cfg.enable;
11 example = true;
12 description = "Whether to enable theming configuration.";
13 type = types.bool;
14 };
15 };
16
17 config = mkIf cfg.theme.enable {
18 home.pointerCursor = {
19 inherit (cursorTheme) package name;
20 gtk.enable = true;
21 hyprcursor.enable = true;
22 x11.enable = true;
23 size = 24;
24 };
25
26 home.packages = with pkgs; [
27 libsForQt5.qtstyleplugin-kvantum
28 libsForQt5.qt5ct
29 ];
30
31 qt = {
32 enable = true;
33 platformTheme.name = "gtk";
34 style.name = "kvantum";
35 };
36
37 xdg.configFile = {
38 "Kvantum/${kvantumTheme.name}".source = "${kvantumTheme.package}/share/Kvantum/${kvantumTheme.name}";
39 "Kvantum/kvantum.kvconfig".text = ''
40 [General]
41 theme=${kvantumTheme.name}
42 '';
43 "qt5ct/qt5ct.conf".text = ''
44 [Appearance]
45 icon_theme=${iconTheme.name}
46 '';
47 "qt6ct/qt6ct.conf".text = ''
48 [Appearance]
49 icon_theme=${iconTheme.name}
50 '';
51 };
52
53 gtk = {
54 enable = true;
55 inherit iconTheme;
56 theme = gtkTheme;
57 font = defaultFont;
58 gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
59 gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
60 gtk4.extraConfig.gtk-application-prefer-dark-theme = 1;
61 };
62
63 dconf = {
64 enable = true;
65 settings = {
66 "org/gnome/desktop/interface".color-scheme = "prefer-dark";
67 };
68 };
69
70 fonts.fontconfig = {
71 enable = true;
72 defaultFonts = {
73 serif = [ "New York" "Noto Serif" "Noto Color Emoji" ];
74 sansSerif = [ "SF Pro Display" "Inter" "Noto Color Emoji" ];
75 monospace = [ "Dank Mono" "SF Mono" "Noto Color Emoji" ];
76 emoji = [ "Noto Color Emoji" ];
77 };
78 };
79 };
80}