mirror of
https://github.com/alyraffauf/nixcfg.git
synced 2024-12-01 13:59:17 -05:00
243 lines
7.2 KiB
Nix
243 lines
7.2 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
...
|
|
}: {
|
|
options = {
|
|
alyraffauf.desktop.theme = {
|
|
enable =
|
|
lib.mkEnableOption "GTK and Qt themes.";
|
|
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;
|
|
type = lib.types.package;
|
|
};
|
|
hideTitleBar = lib.mkOption {
|
|
description = "Whether to hide GTK3/4 titlebars (useful for some window managers).";
|
|
default = false;
|
|
type = lib.types.bool;
|
|
};
|
|
};
|
|
qt = {
|
|
name = lib.mkOption {
|
|
description = "Qt Kvantum theme name.";
|
|
default = "Catppuccin-Frappe-Mauve";
|
|
type = lib.types.str;
|
|
};
|
|
package = lib.mkOption {
|
|
description = "Qt Kvantum theme package.";
|
|
default = pkgs.catppuccin-kvantum;
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
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;
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
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;
|
|
};
|
|
};
|
|
font = {
|
|
name = lib.mkOption {
|
|
description = "Font name.";
|
|
default = "NotoSans Nerd Font";
|
|
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;
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
terminalFont = {
|
|
name = lib.mkOption {
|
|
description = "Font name.";
|
|
default = "NotoSansM Nerd Font";
|
|
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;
|
|
type = lib.types.package;
|
|
};
|
|
};
|
|
colors = {
|
|
preferDark = lib.mkOption {
|
|
description = "Whether to prefer dark mode apps or not.";
|
|
default = config.alyraffauf.desktop.theme.enable;
|
|
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;
|
|
};
|
|
};
|
|
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;
|
|
defaultCursor = config.alyraffauf.desktop.theme.cursorTheme.name;
|
|
};
|
|
name = config.alyraffauf.desktop.theme.cursorTheme.name;
|
|
package = config.alyraffauf.desktop.theme.cursorTheme.package;
|
|
size = config.alyraffauf.desktop.theme.cursorTheme.size;
|
|
};
|
|
|
|
qt = {
|
|
enable = true;
|
|
platformTheme.name = "qtct";
|
|
style.name = "kvantum";
|
|
};
|
|
|
|
xdg.configFile = {
|
|
"Kvantum/${config.alyraffauf.desktop.theme.qt.name}".source = "${config.alyraffauf.desktop.theme.qt.package}/share/Kvantum/${config.alyraffauf.desktop.theme.qt.name}";
|
|
"Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" {
|
|
General.theme = config.alyraffauf.desktop.theme.qt.name;
|
|
};
|
|
};
|
|
|
|
fonts.fontconfig = {
|
|
enable = true;
|
|
defaultFonts = {
|
|
monospace = [config.alyraffauf.desktop.theme.terminalFont.name];
|
|
serif = ["NotoSerif Nerd Font"];
|
|
sansSerif = [config.alyraffauf.desktop.theme.font.name];
|
|
};
|
|
};
|
|
|
|
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;};
|
|
|
|
gtk3.extraCss =
|
|
if config.alyraffauf.desktop.theme.gtk.hideTitleBar
|
|
then ''
|
|
/* No (default) title bar on wayland */
|
|
headerbar.default-decoration {
|
|
/* You may need to tweak these values depending on your GTK theme */
|
|
margin-bottom: 50px;
|
|
margin-top: -100px;
|
|
|
|
background: transparent;
|
|
padding: 0;
|
|
border: 0;
|
|
min-height: 0;
|
|
font-size: 0;
|
|
box-shadow: none;
|
|
}
|
|
|
|
/* rm -rf window shadows */
|
|
window.csd, /* gtk4? */
|
|
window.csd decoration { /* gtk3 */
|
|
box-shadow: none;
|
|
}
|
|
''
|
|
else "/* */";
|
|
|
|
gtk4.extraCss = config.gtk.gtk3.extraCss;
|
|
};
|
|
|
|
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;
|
|
};
|
|
};
|
|
};
|
|
}
|