nix-dotfiles/modules/desktop/themes/catppuccin/default.nix
2024-10-01 20:02:00 -07:00

119 lines
3.2 KiB
Nix

{ inputs, config, lib, pkgs, ... }:
with lib;
let
cfg = config.modules.desktop.themes;
accent = "pink";
variant = "mocha";
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 = variant != "latte";
gtkTheme = {
name = "catppuccin-${variant}-${accent}-compact+rimless";
package = pkgs.catppuccin-gtk.override {
variant = variant;
accents = [ accent ];
tweaks = [ "rimless" ];
size = "compact";
};
};
kvantumTheme = {
name = "Catppuccin-${pascalCase variant}-${pascalCase accent}";
package = pkgs.catppuccin-kvantum.override {
variant = pascalCase variant;
accent = pascalCase accent;
};
};
iconTheme = {
name = "WhiteSur-dark";
package = pkgs.whitesur-icon-theme;
};
cursorTheme = {
name = "graphite-dark";
package = pkgs.graphite-cursors;
};
sddmTheme = {
name = "catppuccin-sddm-corners";
package = (pkgs.my.catppuccin-sddm-corners.override {
config.General = {
Background = ../../../../assets/lockscreen.png;
Font = config.modules.desktop.fonts.fonts.sansSerif.family;
};
});
};
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 {
col.shadow=$crust
col.shadow_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}'
'';
};
};
}