nixos-config/modules/graphical/theme/default.nix
2023-10-19 18:22:39 +02:00

155 lines
4.8 KiB
Nix

{ config, lib, pkgs, ... }:
{
options.chvp.graphical.theme.enable = lib.mkOption {
default = false;
example = true;
};
config = lib.mkIf config.chvp.graphical.theme.enable {
chvp.base.zfs.homeLinks = [
{ path = ".config/qt5ct"; type = "cache"; }
{ path = ".config/qt6ct"; type = "cache"; }
];
fonts = {
fontDir.enable = true;
fontconfig = {
enable = true;
defaultFonts = {
emoji = [ "Noto Color Emoji" ];
# The Tinos and Amiro fonts overlap with Font Awesome's codepoints, so make sure we give Font Awesome a higher priority.
monospace = [ "Hack" "Font Awesome 6 Free" ];
sansSerif = [ "Noto Sans" "Font Awesome 6 Free" ];
serif = [ "Noto Serif" "Font Awesome 6 Free" ];
};
};
packages = with pkgs; [
hack-font
font-awesome
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
noto-fonts-extra
];
};
programs.dconf.enable = true;
home-manager.users.charlotte = { pkgs, lib, ... }: {
home.packages = [
pkgs.catppuccin-cursors.latteLight
# Also install dark mode to profile for darkman
(pkgs.catppuccin-gtk.override { size = "compact"; variant = "frappe"; })
];
home.file = {
".icons/default/index.theme".text = ''
[Icon Theme]
Name=Default
Comment=Default Cursor Theme
Inherits=Catppuccin-Latte-Light-Cursors
'';
};
dconf.settings."org/gnome/desktop/wm/preferences".button-layout = "";
gtk = {
enable = true;
font = {
package = pkgs.noto-fonts;
name = "Noto Sans";
size = 10;
};
gtk2.extraConfig = ''
gtk-cursor-theme-name = "Catppuccin-Latte-Light-Cursors"
gtk-cursor-theme-size = 24
'';
gtk3 = {
extraConfig = {
gtk-cursor-theme-name = "Catppuccin-Latte-Light-Cursors";
gtk-cursor-theme-size = 24;
};
};
iconTheme = {
package = pkgs.libsForQt5.breeze-icons;
name = "breeze";
};
theme = {
package = pkgs.catppuccin-gtk.override { size = "compact"; variant = "latte"; };
name = "Catppuccin-Latte-Compact-Blue-Light";
};
};
qt = {
enable = true;
platformTheme = "qtct";
style = {
name = "lightly";
package = pkgs.lightly-qt;
};
};
services.darkman = {
enable = true;
settings = {
lat = 51.0;
lng = 3.7;
usegeoclue = false;
dbusserver = true;
portal = true;
};
darkModeScripts = {
emacs = ''
emacsclient --eval "(setq catppuccin-flavor 'frappe)"
emacsclient --eval "(load-theme 'catppuccin :no-confirm)"
'';
gtk = ''
${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme Catppuccin-Frappe-Compact-Blue-Dark
'';
river = ''
riverctl background-color 0x626880
riverctl border-color-focused 0x99d1db
riverctl border-color-unfocused 0x232634
riverctl border-color-urgent 0xf4b8e4
'';
qt = ''
sed -i "s/Latte/Frappe/" ~/.config/qt5ct/qt5ct.conf
sed -i "s/Latte/Frappe/" ~/.config/qt6ct/qt6ct.conf
'';
terminal = ''
pkill -SIGUSR2 zsh
'';
waybar = ''
ln -sf ~/.config/waybar/frappe.css ~/.config/waybar/colors.css
systemctl --user restart waybar.service
'';
};
lightModeScripts = {
emacs = ''
emacsclient --eval "(setq catppuccin-flavor 'latte)"
emacsclient --eval "(load-theme 'catppuccin :no-confirm)"
'';
gtk = ''
${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme Catppuccin-Latte-Compact-Blue-Light
'';
river = ''
riverctl background-color 0xacb0be
riverctl border-color-focused 0x04e5e5
riverctl border-color-unfocused 0xdce0e8
riverctl border-color-urgent 0xea76cb
'';
qt = ''
sed -i "s/Frappe/Latte/" ~/.config/qt5ct/qt5ct.conf
sed -i "s/Frappe/Latte/" ~/.config/qt6ct/qt6ct.conf
'';
terminal = ''
pkill -SIGUSR1 zsh
'';
waybar = ''
ln -sf ~/.config/waybar/latte.css ~/.config/waybar/colors.css
systemctl --user restart waybar.service
'';
};
};
home.activation = {
linkWaybarCssColors = lib.hm.dag.entryAfter ["writeBoundary"] ''
$DRY_RUN_CMD ln -sf $VERBOSE_ARG ~/.config/waybar/latte.css ~/.config/waybar/colors.css
'';
};
};
};
}