split catppuccin profile

This commit is contained in:
Dmitriy Kholkin 2024-06-19 15:16:43 +03:00
parent 001ab33d7b
commit 418084f2c9
Signed by: AtaraxiaDev
GPG Key ID: FD266B810DF48DF2
5 changed files with 169 additions and 101 deletions

View File

@ -1,33 +1,12 @@
{ config, pkgs, lib, inputs, ... }:
let
thm = config.lib.base16.theme;
# this capitalizes the first letter in a string.
mkUpper =
str:
(lib.toUpper (builtins.substring 0 1 str)) +
(builtins.substring 1 (builtins.stringLength str) str);
accent = "mauve";
# accent = "lavender";
flavor = "mocha";
size = "standard"; # "standard" "compact"
tweaks = [ "normal" ]; # "black" "rimless" "normal"
flavorUpper = mkUpper flavor;
accentUpper = mkUpper accent;
sizeUpper = mkUpper size;
gtkTheme = if flavor == "latte" then "Light" else "Dark";
in
{
imports = [ inputs.catppuccin.nixosModules.catppuccin ];
catppuccin.accent = accent;
catppuccin.flavor = flavor;
{ cfg }: { config, pkgs, lib, inputs, ... }: {
catppuccin.accent = cfg.accent;
catppuccin.flavor = cfg.flavor;
boot.loader.grub.catppuccin.enable = true;
console.catppuccin.enable = true;
home-manager.users.${config.mainuser} = rec {
imports = [ inputs.catppuccin.homeManagerModules.catppuccin ];
catppuccin.accent = accent;
catppuccin.flavor = flavor;
catppuccin.accent = cfg.accent;
catppuccin.flavor = cfg.flavor;
qt.style.catppuccin.enable = true;
qt.style.catppuccin.apply = true;
@ -47,85 +26,18 @@ in
zsh.syntaxHighlighting.catppuccin.enable = true;
waybar.catppuccin.enable = true;
waybar.catppuccin.mode = "createLink";
vscode = {
extensions = let
ext-vscode = inputs.nix-vscode-marketplace.extensions.${pkgs.system}.vscode-marketplace;
in [
ext-vscode.alexdauenhauer.catppuccin-noctis
ext-vscode.catppuccin.catppuccin-vsc-icons
(inputs.catppuccin-vsc.packages.${pkgs.system}.catppuccin-vsc.override {
accent = accent;
boldKeywords = false;
italicComments = false;
italicKeywords = false;
extraBordersEnabled = false;
workbenchMode = "flat";
bracketMode = "dimmed";
colorOverrides = {
mocha = {
base = "#1c1c2d";
mantle = "#191925";
crust = "#151511";
};
};
customUIColors = {
"statusBar.foreground" = "accent";
};
})
];
userSettings = {
"editor.semanticHighlighting.enabled" = lib.mkForce true;
"terminal.integrated.minimumContrastRatio" = lib.mkForce 1;
"window.titleBarStyle" = lib.mkForce "custom";
"workbench.colorTheme" = lib.mkForce "Catppuccin ${flavorUpper}";
"workbench.iconTheme" = lib.mkForce "catppuccin-${flavor}";
};
};
};
wayland.windowManager.hyprland.extraConfig = ''
exec=hyprctl setcursor catppuccin-${flavor}-${accent}-cursors ${toString thm.cursorSize}
exec=hyprctl setcursor catppuccin-${cfg.flavor}-${cfg.accent}-cursors ${toString cfg.thm.cursorSize}
'';
# GTK
gtk = {
enable = true;
theme = {
name = "Catppuccin-${flavorUpper}-${sizeUpper}-${accentUpper}-${gtkTheme}";
package = pkgs.catppuccin-gtk.override {
inherit tweaks;
accents = [ accent ];
variant = flavor;
};
};
cursorTheme = {
name = "catppuccin-${flavor}-${accent}-cursors";
package = pkgs.catppuccin-cursors.${flavor + accentUpper};
};
iconTheme = {
name = "Papirus-${gtkTheme}";
package = pkgs.catppuccin-papirus-folders.override { inherit accent flavor; };
};
font = {
name = "${thm.fonts.main.family}";
size = thm.fontSizes.normal.int;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
home.sessionVariables.GTK_THEME = gtk.theme.name;
};
themes.base16.extraParams = {
iconTheme = lib.mkForce "Papirus-${gtkTheme}";
iconPackage = lib.mkForce (pkgs.catppuccin-papirus-folders.override { inherit accent flavor; });
cursorPackage = lib.mkForce (pkgs.catppuccin-cursors.${flavor + accentUpper});
cursorTheme = lib.mkForce "catppuccin-${flavor}-${accent}-cursors";
iconTheme = lib.mkForce "Papirus-${cfg.gtkTheme}";
iconPackage = lib.mkForce (pkgs.catppuccin-papirus-folders.override { inherit (cfg) accent flavor; });
cursorPackage = lib.mkForce (pkgs.catppuccin-cursors.${cfg.flavor + cfg.accentUpper});
cursorTheme = lib.mkForce "catppuccin-${cfg.flavor}-${cfg.accent}-cursors";
cursorSize = lib.mkForce 32;
};
}

View File

@ -1,5 +1,34 @@
{ ... }: {
imports = [
./catppuccin.nix
{ config, lib, inputs, ... }: {
imports = let
cfg = rec {
thm = config.lib.base16.theme;
# this capitalizes the first letter in a string.
mkUpper =
str:
(lib.toUpper (builtins.substring 0 1 str)) +
(builtins.substring 1 (builtins.stringLength str) str);
accent = "mauve";
flavor = "mocha";
size = "standard"; # "standard" "compact"
tweaks = [ "normal" ]; # "black" "rimless" "normal"
flavorUpper = mkUpper flavor;
accentUpper = mkUpper accent;
sizeUpper = mkUpper size;
gtkTheme = if flavor == "latte" then "Light" else "Dark";
};
in [
inputs.catppuccin.nixosModules.catppuccin
# Custom modules
(import ./catppuccin.nix { inherit cfg; })
# Until https://github.com/catppuccin/nix/pull/179 is merged
(import ./gitea.nix { inherit cfg; gitea = "gitea"; })
# Deprecated on catppuccin-nix
(import ./gtk.nix { inherit cfg; })
(import ./vscode.nix { inherit cfg; })
];
home-manager.users.${config.mainuser} = {
imports = [ inputs.catppuccin.homeManagerModules.catppuccin ];
};
}

View File

@ -0,0 +1,55 @@
{ cfg, gitea ? "gitea" }: { config, pkgs, lib, ... }:
let
theme = pkgs.fetchzip {
url = "https://github.com/catppuccin/gitea/releases/download/v0.4.1/catppuccin-gitea.tar.gz";
sha256 = "sha256-14XqO1ZhhPS7VDBSzqW55kh6n5cFZGZmvRCtMEh8JPI=";
stripRoot = false;
};
in {
config = lib.mkIf (gitea != "" && config.services.${gitea}.enable) {
systemd.services.${gitea}.preStart = let
customDir = config.services.${gitea}.customDir;
baseDir =
if lib.versionAtLeast config.services.${gitea}.package.version "1.21.0" then
"${customDir}/public/assets"
else
"${customDir}/public";
in lib.mkAfter ''
rm -rf ${baseDir}/css
mkdir -p ${baseDir}
ln -sf ${theme} ${baseDir}/css
'';
services.${gitea}.settings.ui = {
DEFAULT_THEME = lib.mkForce "catppuccin-${cfg.flavor}-${cfg.accent}";
THEMES = let
builtinThemes = {
gitea = [
"auto"
"gitea"
"arc-greeen"
];
forgejo = [
"forgejo-auto"
"forgejo-light"
"forgejo-dark"
"gitea-auto"
"gitea-light"
"gitea-dark"
"forgejo-auto-deuteranopia-protanopia"
"forgejo-light-deuteranopia-protanopia"
"forgejo-dark-deuteranopia-protanopia"
"forgejo-auto-tritanopia"
"forgejo-light-tritanopia"
"forgejo-dark-tritanopia"
];
};
in lib.mkForce builtins.concatStringsSep "," (
builtinThemes.${gitea}
++ (map (name: lib.removePrefix "theme-" (lib.removeSuffix ".css" name)) (
builtins.attrNames (builtins.readDir theme)
))
);
};
};
}

View File

@ -0,0 +1,34 @@
{ cfg }: { config, pkgs, ... }: {
home-manager.users.${config.mainuser} = rec {
gtk = {
enable = true;
theme = {
name = "Catppuccin-${cfg.flavorUpper}-${cfg.sizeUpper}-${cfg.accentUpper}-${cfg.gtkTheme}";
package = pkgs.catppuccin-gtk.override {
inherit (cfg) tweaks;
accents = [ cfg.accent ];
variant = cfg.flavor;
};
};
cursorTheme = {
name = "catppuccin-${cfg.flavor}-${cfg.accent}-cursors";
package = pkgs.catppuccin-cursors.${cfg.flavor + cfg.accentUpper};
};
iconTheme = {
name = "Papirus-${cfg.gtkTheme}";
package = pkgs.catppuccin-papirus-folders.override { inherit (cfg) accent flavor; };
};
font = {
name = cfg.thm.fonts.main.family;
size = cfg.thm.fontSizes.normal.int;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
gtk4.extraConfig = {
gtk-application-prefer-dark-theme = 1;
};
};
home.sessionVariables.GTK_THEME = gtk.theme.name;
};
}

View File

@ -0,0 +1,38 @@
{ cfg }: { config, lib, pkgs, inputs, ... }: {
home-manager.users.${config.mainuser} = {
programs.vscode = {
extensions = let
ext-vscode = inputs.nix-vscode-marketplace.extensions.${pkgs.system}.vscode-marketplace;
in [
ext-vscode.alexdauenhauer.catppuccin-noctis
ext-vscode.catppuccin.catppuccin-vsc-icons
(inputs.catppuccin-vsc.packages.${pkgs.system}.catppuccin-vsc.override {
accent = cfg.accent;
boldKeywords = false;
italicComments = false;
italicKeywords = false;
extraBordersEnabled = false;
workbenchMode = "flat";
bracketMode = "dimmed";
colorOverrides = {
mocha = {
base = "#1c1c2d";
mantle = "#191925";
crust = "#151511";
};
};
customUIColors = {
"statusBar.foreground" = "accent";
};
})
];
userSettings = {
"editor.semanticHighlighting.enabled" = lib.mkForce true;
"terminal.integrated.minimumContrastRatio" = lib.mkForce 1;
"window.titleBarStyle" = lib.mkForce "custom";
"workbench.colorTheme" = lib.mkForce "Catppuccin ${cfg.flavorUpper}";
"workbench.iconTheme" = lib.mkForce "catppuccin-${cfg.flavor}";
};
};
};
}