1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-08 19:46:05 +01:00
home-manager/modules/misc/gtk.nix
2025-09-07 09:46:25 -05:00

97 lines
2 KiB
Nix

{ config, lib, ... }:
let
inherit (lib)
mkEnableOption
mkIf
mkOption
types
;
cfg = config.gtk;
cfg2 = config.gtk.gtk2;
cfg3 = config.gtk.gtk3;
cfg4 = config.gtk.gtk4;
gtkLib = import ./gtk/lib.nix { inherit lib; };
themeType = gtkLib.mkThemeType {
typeName = "theme";
packageExample = "pkgs.gnome.gnome-themes-extra";
};
iconThemeType = gtkLib.mkThemeType {
typeName = "icon theme";
packageExample = "pkgs.adwaita-icon-theme";
};
cursorThemeType = gtkLib.mkThemeType {
typeName = "cursor theme";
hasSize = true;
packageExample = "pkgs.vanilla-dmz";
nameExample = "Vanilla-DMZ";
};
in
{
meta.maintainers = with lib.maintainers; [
khaneliman
rycee
];
imports = [
./gtk/gtk2.nix
./gtk/gtk3.nix
./gtk/gtk4.nix
];
options.gtk = {
enable = mkEnableOption "GTK theming and configuration";
# Global settings that act as defaults for version-specific settings
font = mkOption {
type = types.nullOr lib.hm.types.fontType;
default = null;
description = "Default font for all GTK versions.";
};
theme = mkOption {
type = types.nullOr themeType;
default = null;
description = "Default theme for all GTK versions.";
};
iconTheme = mkOption {
type = types.nullOr iconThemeType;
default = null;
description = "Default icon theme for all GTK versions.";
};
cursorTheme = mkOption {
type = types.nullOr cursorThemeType;
default = null;
description = "Default cursor theme for all GTK versions.";
};
colorScheme = mkOption {
type = types.nullOr (
types.enum [
"dark"
"light"
]
);
default = null;
description = "Default color scheme for all GTK versions";
};
};
config = mkIf cfg.enable {
# Collect packages from all GTK versions
home.packages = gtkLib.collectGtkPackages [
cfg2
cfg3
cfg4
];
};
}