nixdots/options/home/theme.nix
2024-08-07 21:53:57 +02:00

149 lines
3.9 KiB
Nix

{
lib,
pkgs,
...
}: let
inherit (lib) mkEnableOption mkOption types;
in {
options.myOptions.home-manager.theme = {
gtk = {
enable = mkEnableOption "GTK theming optionss";
usePortal = mkEnableOption "native desktop portal use for filepickers";
theme = {
name = mkOption {
type = types.str;
default = "Tokyonight-Dark";
description = "The name for the GTK theme package";
};
package = mkOption {
type = types.package;
description = "The theme package to be used for GTK programs";
default = pkgs.tokyo-night-gtk;
};
};
iconTheme = {
name = mkOption {
type = types.str;
description = "The name for the icon theme that will be used for GTK programs";
default = "Papirus-Dark";
};
package = mkOption {
type = types.package;
description = "The GTK icon theme package to be used";
default = pkgs.catppuccin-papirus-folders.override {
accent = "blue";
flavor = "mocha";
};
};
};
font = {
name = mkOption {
type = types.str;
description = "The name of the font that will be used for GTK applications";
default = "Noto Sans"; # Lexend
};
size = mkOption {
type = types.int;
description = "The size of the font";
default = 10; # 10
};
};
};
qt = {
forceGtk = mkOption {
type = types.bool;
default = false;
description = ''
Whether to force QT applications to try and use the GTK theme.
If false, qtct platform theme & Kvantum will be used instead.
'';
};
kvantumTheme = {
name = mkOption {
type = types.str;
default = "Catppuccin-Mocha-Blue";
description = ''
The name for the QT kvantum theme.
This needs to match the directory containing the kvconfig & svg files
for selected theme. The package should expose these in /share/Kvantum.
This has no effect if forceGtk is set.
'';
};
package = mkOption {
type = types.package;
description = ''
The theme package to be used for QT kvantum theme.
This needs to expose a directory in /share/Kvantum with the
kvconfig & svg files. The name of this directory should match
the kvantumTheme.name option.
This has no effect if forceGtk is set.
'';
default = pkgs.catppuccin-kvantum.override {
variant = "Mocha";
accent = "Blue";
};
};
};
iconTheme = {
name = mkOption {
type = types.str;
description = ''
The name for the icon theme that will be used for QT programs.
This has no effect if forceGtk is set.
'';
default = "Papirus-Dark";
};
package = mkOption {
type = types.package;
description = ''
The QT icon theme package to be used.
This has no effect if forceGtk is set.
'';
default = pkgs.catppuccin-papirus-folders.override {
accent = "blue";
flavor = "mocha";
};
};
};
};
cursor = {
name = mkOption {
type = types.str;
default = "BreezeX-RosePine-Linux";
description = "The name of the cursor inside the package";
};
package = mkOption {
type = types.package;
default = pkgs.rose-pine-cursor;
description = "The package providing the cursors";
};
size = mkOption {
type = types.int;
default = 24;
description = "The size of the cursor";
};
};
};
}