nix-dotfiles/modules/desktop/themes/catppuccin/default.nix

129 lines
3.6 KiB
Nix

{ inputs, config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.themes;
accent = "pink";
variant = "mocha";
dark = variant != "latte";
colorScheme = inputs.nix-colors.colorSchemes.${"catppuccin-${variant}"};
pascalCase = s: (toUpper (substring 0 1 s)) + (toLower (substring 1 (stringLength s) s));
in {
config = mkIf (cfg.active == "catppuccin") {
colorScheme = colorScheme;
modules.desktop.themes = {
dark = dark;
gtkTheme = {
name = "catppuccin-${variant}-${accent}-compact+rimless";
package = pkgs.catppuccin-gtk.override {
variant = variant;
accents = [ accent ];
tweaks = [ "rimless" ];
size = "compact";
};
};
kvantumTheme = {
name = "catppuccin-${variant}-${accent}";
package = pkgs.catppuccin-kvantum.override {
variant = variant;
accent = accent;
};
};
iconTheme = {
name = "WhiteSur-${if dark then "dark" else "light"}";
package = pkgs.whitesur-icon-theme;
};
cursorTheme = {
name = "graphite-${if dark then "dark" else "light"}";
package = pkgs.graphite-cursors;
size = 24;
};
sddmTheme = {
name = "catppuccin-${variant}";
package = (pkgs.catppuccin-sddm.override {
flavor = variant;
font = config.modules.desktop.fonts.fonts.sansSerif.family;
fontSize = toString config.modules.desktop.fonts.fonts.sansSerif.size;
background = ../../../../assets/lockscreen.jpg;
loginBackground = true;
});
};
plymouthTheme = {
name = "catppuccin-${variant}";
package = (pkgs.catppuccin-plymouth.override {
variant = variant;
});
};
editor = {
vscode = {
colorTheme = {
name = "Catppuccin ${pascalCase variant}";
extension = (pkgs.vscode-extensions.catppuccin.catppuccin-vsc.override {
accent = accent;
boldKeywords = false;
italicComments = false;
italicKeywords = false;
extraBordersEnabled = false;
workbenchMode = "flat";
bracketMode = "rainbow";
});
};
iconTheme = {
name = "material-icon-theme";
extension = pkgs.vscode-extensions.pkief.material-icon-theme;
};
};
};
hyprland = {
source = "${inputs.hyprland-catppuccin}/themes/${variant}.conf";
extraConfig = ''
general {
col.active_border=''$${accent}
col.inactive_border=$surface0
}
decoration:shadow {
color=$crust
color_inactive=$crust
}
misc {
background_color=$crust
}
'';
};
waybar = builtins.concatStringsSep "\n" [
"@import \"${inputs.waybar-catppuccin}/themes/${variant}.css\";"
"@define-color accent @${accent};"
(lib.readFile ./waybar.css)
];
wob = with colorScheme.palette; {
borderColor = "${base04}FF";
backgroundColor = "${base01}66";
barColor = "${base05}FF";
};
rofi = ./rofi.rasi;
wezterm = ''
config.color_scheme = 'Catppuccin ${pascalCase variant}'
'';
nwg-drawer = builtins.concatStringsSep "\n" [
"@import \"${inputs.waybar-catppuccin}/themes/${variant}.css\";"
#"@define-color accent @${accent};" # gtk already does our styling here
(lib.readFile ./nwg-drawer.css)
];
};
};
}