mirror of
https://github.com/alyraffauf/nixcfg.git
synced 2024-11-25 08:11:54 -05:00
186 lines
5.4 KiB
Nix
186 lines
5.4 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}: {
|
|
options = {
|
|
alyraffauf.desktop.theme.enable =
|
|
lib.mkEnableOption "GTK and Qt themes.";
|
|
alyraffauf.desktop.theme.gtk = {
|
|
name = lib.mkOption {
|
|
description = "GTK theme name.";
|
|
default = "Catppuccin-Frappe-Compact-Mauve-Dark";
|
|
type = lib.types.str;
|
|
};
|
|
package = lib.mkOption {
|
|
description = "GTK theme package.";
|
|
default = pkgs.catppuccin-gtk.override {
|
|
accents = ["mauve"];
|
|
size = "compact";
|
|
variant = "frappe";
|
|
tweaks = ["normal"];
|
|
};
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
alyraffauf.desktop.theme.iconTheme = {
|
|
name = lib.mkOption {
|
|
description = "Icon theme name.";
|
|
default = "Papirus-Dark";
|
|
type = lib.types.str;
|
|
};
|
|
package = lib.mkOption {
|
|
description = "Icon theme package.";
|
|
default = pkgs.catppuccin-papirus-folders.override {
|
|
flavor = "frappe";
|
|
accent = "mauve";
|
|
};
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
alyraffauf.desktop.theme.cursorTheme = {
|
|
name = lib.mkOption {
|
|
description = "Cursor theme name.";
|
|
default = "Catppuccin-Frappe-Dark-Cursors";
|
|
type = lib.types.str;
|
|
};
|
|
size = lib.mkOption {
|
|
description = "Cursor size.";
|
|
default = 24;
|
|
type = lib.types.int;
|
|
};
|
|
package = lib.mkOption {
|
|
description = "Cursor theme package.";
|
|
default = pkgs.catppuccin-cursors.frappeDark;
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
alyraffauf.desktop.theme.font = {
|
|
name = lib.mkOption {
|
|
description = "Font name.";
|
|
default = "NotoSansNerdFont";
|
|
type = lib.types.str;
|
|
};
|
|
size = lib.mkOption {
|
|
description = "Font size.";
|
|
default = 11;
|
|
type = lib.types.int;
|
|
};
|
|
package = lib.mkOption {
|
|
description = "Font package.";
|
|
default = pkgs.nerdfonts.override {fonts = ["Noto"];};
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
alyraffauf.desktop.theme.terminalFont = {
|
|
name = lib.mkOption {
|
|
description = "Font name.";
|
|
default = "NotoSansMNerdFont";
|
|
type = lib.types.str;
|
|
};
|
|
size = lib.mkOption {
|
|
description = "Font size.";
|
|
default = 11;
|
|
type = lib.types.int;
|
|
};
|
|
package = lib.mkOption {
|
|
description = "Font package.";
|
|
default = pkgs.nerdfonts.override {fonts = ["Noto"];};
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
alyraffauf.desktop.theme.colors = {
|
|
preferDark = lib.mkOption {
|
|
description = "Whether to prefer dark mode apps or not.";
|
|
default = true;
|
|
type = lib.types.bool;
|
|
};
|
|
text = lib.mkOption {
|
|
description = "Text color.";
|
|
default = "#FAFAFA";
|
|
type = lib.types.str;
|
|
};
|
|
background = lib.mkOption {
|
|
description = "Background color.";
|
|
default = "#232634";
|
|
type = lib.types.str;
|
|
};
|
|
primary = lib.mkOption {
|
|
description = "Primary color.";
|
|
default = "#CA9EE6";
|
|
type = lib.types.str;
|
|
};
|
|
secondary = lib.mkOption {
|
|
description = "Secondary color.";
|
|
default = "#99D1DB";
|
|
type = lib.types.str;
|
|
};
|
|
inactive = lib.mkOption {
|
|
description = "Inactive color.";
|
|
default = "#626880";
|
|
type = lib.types.str;
|
|
};
|
|
shadow = lib.mkOption {
|
|
description = "Drop shadow color.";
|
|
default = "#1A1A1A";
|
|
type = lib.types.str;
|
|
};
|
|
};
|
|
alyraffauf.desktop.theme.wallpaper = lib.mkOption {
|
|
description = "Default wallpaper.";
|
|
default = "${config.xdg.dataHome}/backgrounds/jr-korpa-9XngoIpxcEo-unsplash.jpg";
|
|
type = lib.types.str;
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf config.alyraffauf.desktop.theme.enable {
|
|
home.pointerCursor = {
|
|
gtk.enable = true;
|
|
x11.enable = true;
|
|
package = config.alyraffauf.desktop.theme.cursorTheme.package;
|
|
name = config.alyraffauf.desktop.theme.cursorTheme.name;
|
|
size = config.alyraffauf.desktop.theme.cursorTheme.size;
|
|
};
|
|
|
|
qt = {
|
|
enable = true;
|
|
platformTheme.name = "gtk";
|
|
style.name = "gtk2";
|
|
};
|
|
|
|
gtk = {
|
|
enable = true;
|
|
|
|
theme = {
|
|
package = config.alyraffauf.desktop.theme.gtk.package;
|
|
name = config.alyraffauf.desktop.theme.gtk.name;
|
|
};
|
|
|
|
iconTheme = {
|
|
package = config.alyraffauf.desktop.theme.iconTheme.package;
|
|
name = config.alyraffauf.desktop.theme.iconTheme.name;
|
|
};
|
|
|
|
font = {
|
|
name = "${config.alyraffauf.desktop.theme.font.name}-Regular";
|
|
package = config.alyraffauf.desktop.theme.font.package;
|
|
size = config.alyraffauf.desktop.theme.font.size;
|
|
};
|
|
|
|
gtk3.extraConfig = lib.attrsets.optionalAttrs (config.alyraffauf.desktop.theme.colors.preferDark) {gtk-application-prefer-dark-theme = 1;};
|
|
|
|
gtk4.extraConfig = lib.attrsets.optionalAttrs (config.alyraffauf.desktop.theme.colors.preferDark) {gtk-application-prefer-dark-theme = 1;};
|
|
};
|
|
|
|
dconf.settings = {
|
|
"org/gnome/desktop/interface" = {
|
|
gtk-theme = config.alyraffauf.desktop.theme.gtk.name;
|
|
color-scheme = "prefer-dark";
|
|
cursor-theme = config.alyraffauf.desktop.theme.cursorTheme.name;
|
|
cursor-size = config.alyraffauf.desktop.theme.cursorTheme.size;
|
|
};
|
|
};
|
|
};
|
|
}
|