135 lines
4.0 KiB
Nix
135 lines
4.0 KiB
Nix
{ ... }: {
|
|
flake.homeManagerModules.wisdomDesktopGtkQtTheming =
|
|
{ config, lib, pkgs, ... }:
|
|
let
|
|
root = config.chiasson.home;
|
|
cfg = config.chiasson.home.desktop.theming;
|
|
in
|
|
{
|
|
options.chiasson.home.desktop.theming = {
|
|
enable = lib.mkEnableOption ''
|
|
WhiteSur GTK + icon themes, Phinger cursor, and Qt via the KDE platform theme — same idea as
|
|
the old `home-shared.nix` stack for Hyprland/Niri (no full Plasma session required). Optional
|
|
`dank-colors.css` import for DMS/matugen GTK accents.
|
|
'';
|
|
|
|
matugenGtkColors = lib.mkOption {
|
|
type = lib.types.bool;
|
|
default = true;
|
|
description = ''
|
|
Add `@import url("dank-colors.css");` to gtk3/gtk4 extraCss. DMS/matugen writes
|
|
`~/.config/gtk-3.0` / `gtk-4.0` `dank-colors.css` when dynamic theming is on — disable if
|
|
you use this module without DMS.
|
|
'';
|
|
};
|
|
|
|
gtkTheme = {
|
|
name = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "WhiteSur-Dark";
|
|
};
|
|
package = lib.mkOption {
|
|
type = lib.types.package;
|
|
default = pkgs.whitesur-gtk-theme;
|
|
};
|
|
};
|
|
|
|
iconTheme = {
|
|
name = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "WhiteSur-dark";
|
|
};
|
|
package = lib.mkOption {
|
|
type = lib.types.package;
|
|
default = pkgs.whitesur-icon-theme;
|
|
};
|
|
};
|
|
|
|
cursor = {
|
|
name = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "phinger-cursors-dark";
|
|
};
|
|
package = lib.mkOption {
|
|
type = lib.types.package;
|
|
default = pkgs.phinger-cursors;
|
|
};
|
|
size = lib.mkOption {
|
|
type = lib.types.int;
|
|
default = 32;
|
|
};
|
|
};
|
|
|
|
qt = {
|
|
platformTheme = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "kde";
|
|
description = ''
|
|
`QT_QPA_PLATFORMTHEME` (e.g. `kde` for Qt/KDE integration, matches previous flake).
|
|
'';
|
|
};
|
|
extraPackages = lib.mkOption {
|
|
type = lib.types.listOf lib.types.package;
|
|
default = [ pkgs.whitesur-kde pkgs.qt6Packages.qt6ct ];
|
|
description = "Extra packages (KDE look-and-feel + qt6ct GUI).";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf (root.enable && cfg.enable) (lib.mkMerge [
|
|
{
|
|
home.packages = cfg.qt.extraPackages;
|
|
|
|
home.sessionVariables = {
|
|
QT_QPA_PLATFORMTHEME = cfg.qt.platformTheme;
|
|
};
|
|
|
|
home.pointerCursor = {
|
|
name = cfg.cursor.name;
|
|
package = cfg.cursor.package;
|
|
size = cfg.cursor.size;
|
|
gtk.enable = true;
|
|
x11.enable = true;
|
|
};
|
|
|
|
gtk = {
|
|
enable = true;
|
|
theme = {
|
|
name = cfg.gtkTheme.name;
|
|
package = cfg.gtkTheme.package;
|
|
};
|
|
iconTheme = {
|
|
name = cfg.iconTheme.name;
|
|
package = cfg.iconTheme.package;
|
|
};
|
|
cursorTheme = {
|
|
name = cfg.cursor.name;
|
|
package = cfg.cursor.package;
|
|
size = cfg.cursor.size;
|
|
};
|
|
gtk3.extraConfig = {
|
|
gtk-application-prefer-dark-theme = 1;
|
|
};
|
|
gtk4 = {
|
|
theme = {
|
|
name = cfg.gtkTheme.name;
|
|
package = cfg.gtkTheme.package;
|
|
};
|
|
extraConfig = {
|
|
gtk-application-prefer-dark-theme = 1;
|
|
};
|
|
};
|
|
};
|
|
}
|
|
(lib.mkIf cfg.matugenGtkColors {
|
|
gtk.gtk3.extraCss = ''
|
|
@import url("dank-colors.css");
|
|
'';
|
|
gtk.gtk4.extraCss = ''
|
|
@import url("dank-colors.css");
|
|
'';
|
|
})
|
|
]);
|
|
};
|
|
}
|