feat: add catppuccin home module

This commit is contained in:
Dmitriy Kholkin 2025-06-07 18:14:46 +03:00
parent 7c0d62d2b1
commit 428980743c
Signed by: AtaraxiaDev
GPG Key ID: FD266B810DF48DF2
2 changed files with 148 additions and 0 deletions

View File

@ -1,6 +1,7 @@
{
config,
pkgs,
inputs,
...
}:
let
@ -10,7 +11,12 @@ in
imports = [
./hardware-configuration.nix
./boot.nix
inputs.catppuccin.nixosModules.catppuccin
];
catppuccin.enable = true;
catppuccin.accent = "mauve";
catppuccin.flavor = "mocha";
ataraxia.defaults.role = "desktop";
ataraxia.defaults.hardware.cpuVendor = "amd";
@ -57,6 +63,7 @@ in
# Home-manager
home-manager.users.${defaultUser} = {
ataraxia.defaults.role = "desktop";
ataraxia.theme.catppuccin.enable = true;
persist.state.directories = [
".config/sops/age"

View File

@ -0,0 +1,141 @@
{
config,
lib,
pkgs,
inputs,
...
}:
let
inherit (lib)
mkEnableOption
mkIf
mkMerge
mkOption
;
inherit (lib.types) bool enum;
cfg = config.ataraxia.theme.catppuccin;
# this capitalizes the first letter in a string.
mkUpper =
str:
(lib.toUpper (builtins.substring 0 1 str)) + (builtins.substring 1 (builtins.stringLength str) str);
in
{
options.ataraxia.theme.catppuccin = {
enable = mkEnableOption "Enable catppuccin theme";
gtk = mkOption {
type = bool;
default = true;
description = "Enable gtk settings";
};
accent = mkOption {
type = enum [
"blue"
"flamingo"
"green"
"lavender"
"maroon"
"mauve"
"peach"
"pink"
"red"
"rosewater"
"sapphire"
"sky"
"teal"
"yellow"
];
default = "mauve";
description = "Catppuccin accent";
};
flavor = mkOption {
type = enum [
"latte"
"frappe"
"macchiato"
"mocha"
];
default = "mocha";
description = "Catppuccin flavor";
};
};
imports = [ inputs.catppuccin.homeModules.catppuccin ];
config = mkMerge [
(mkIf cfg.enable {
catppuccin.accent = cfg.accent;
catppuccin.flavor = cfg.flavor;
catppuccin.enable = true;
catppuccin.waybar.mode = "prependImport"; # or "createLink"
catppuccin.vscode = {
enable = true;
flavor = cfg.flavor;
settings = {
accent = cfg.accent;
boldKeywords = false;
italicComments = false;
italicKeywords = false;
extraBordersEnabled = false;
workbenchMode = "flat";
bracketMode = "dimmed";
colorOverrides = {
${cfg.flavor} = {
base = "#1c1c2d";
mantle = "#191925";
crust = "#151511";
};
};
customUIColors = {
"statusBar.foreground" = "accent";
};
};
};
programs.vscode.profiles.default.userSettings = {
"editor.semanticHighlighting.enabled" = lib.mkForce true;
"terminal.integrated.minimumContrastRatio" = lib.mkForce 1;
"window.titleBarStyle" = lib.mkForce "custom";
"workbench.colorTheme" = lib.mkForce "Catppuccin ${mkUpper cfg.flavor}";
"workbench.iconTheme" = lib.mkForce "catppuccin-${cfg.flavor}";
};
})
(mkIf (cfg.enable && cfg.gtk) {
gtk = {
enable = true;
theme = {
name = "catppuccin-${cfg.flavor}-${cfg.accent}-standard+normal";
package = pkgs.catppuccin-gtk.override {
accents = [ cfg.accent ];
tweaks = [ "normal" ];
variant = cfg.flavor;
};
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.catppuccin-papirus-folders.override { inherit (cfg) accent flavor; };
};
font = {
package = config.theme.fonts.sans.package;
name = config.theme.fonts.sans.family;
size = config.theme.fonts.size.normal;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
home.sessionVariables.GTK_THEME = config.gtk.theme.name;
xdg.configFile =
let
gtk4Dir = "${config.gtk.theme.package}/share/themes/${config.gtk.theme.name}/gtk-4.0";
in
{
"gtk-4.0/assets".source = "${gtk4Dir}/assets";
"gtk-4.0/gtk.css".source = "${gtk4Dir}/gtk.css";
"gtk-4.0/gtk-dark.css".source = "${gtk4Dir}/gtk-dark.css";
};
})
];
}