fully remove flavor and accent-specific catppuccin configs

This commit is contained in:
Sean Kovacs 2025-12-13 22:49:47 -05:00
commit 4ca5cebbb6
Signed by: sckova
GPG key ID: 00F325187C68651A
15 changed files with 276 additions and 364 deletions

View file

@ -1,97 +1,156 @@
{ config, pkgs, ... }:
{
config,
pkgs,
lib,
...
}:
{
home.packages = with pkgs; [
# cli utilities
tmux
fastfetch
btop
killall
wget
ripgrep
ncdu
fzf
wl-clipboard
rclone
waypipe
spotdl
browsh
mosh
# development & tooling
gh
deno
prettier
prettierd
nixfmt-rfc-style
jdk21_headless
# kde and kde theming
kde-rounded-corners
kdePackages.partitionmanager
colloid-icon-theme
# gui applications
vesktop
input-leap
libreoffice-qt-fresh
# helium-browser
bitwarden-desktop
qbittorrent
# gui applications ( games )
openmw
prismlauncher
# gui applications ( multimedia )
audacity
strawberry
musescore
mpv
gimp
calibre
spotify-player
# browsers
# (chromium.override {
# enableWideVine = true;
# })
];
services = {
spotifyd = {
enable = true;
settings = {
global = {
device_type = "computer";
dbus_type = "session";
disable_discovery = true;
use_mpris = true;
bitrate = 320;
initial_volume = 100;
volume_normalisation = true;
normalisation_pregain = -10;
};
options = {
catppuccinUpper = {
accent = lib.mkOption {
type = lib.types.str;
readOnly = true;
default =
builtins.substring 0 1 (lib.toUpper config.catppuccin.accent)
+ builtins.substring 1 (-1) config.catppuccin.accent;
};
flavor = lib.mkOption {
type = lib.types.str;
readOnly = true;
default =
builtins.substring 0 1 (lib.toUpper config.catppuccin.flavor)
+ builtins.substring 1 (-1) config.catppuccin.flavor;
};
};
};
catppuccin = {
enable = false;
cursors.enable = false;
cache.enable = true;
config = {
home.packages =
(with pkgs; [
# cli utilities
tmux
fastfetch
btop
killall
wget
ripgrep
ncdu
fzf
wl-clipboard
rclone
waypipe
spotdl
browsh
mosh
# development & tooling
gh
deno
prettier
prettierd
nixfmt-rfc-style
jdk21_headless
# kde and kde theming
kde-rounded-corners
kdePackages.partitionmanager
colloid-icon-theme
# gui applications
vesktop
input-leap
libreoffice-qt-fresh
# helium-browser
bitwarden-desktop
qbittorrent
# gui applications ( games )
openmw
prismlauncher
# gui applications ( multimedia )
audacity
strawberry
musescore
mpv
gimp
calibre
spotify-player
# overrides
# (chromium.override {
# enableWideVine = true;
# })
(catppuccin-kde.override {
flavour = [
"latte"
config.catppuccin.flavor
];
accents = [
config.catppuccin.accent
];
})
])
++ [
pkgs.catppuccin-cursors.latteDark
pkgs.catppuccin-cursors.latteLight
pkgs.catppuccin-cursors."latte${config.catppuccinUpper.accent}"
pkgs.catppuccin-cursors."${config.catppuccin.flavor}Dark"
pkgs.catppuccin-cursors."${config.catppuccin.flavor}Light"
pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}"
];
services = {
spotifyd = {
enable = true;
settings = {
global = {
device_type = "computer";
dbus_type = "session";
disable_discovery = true;
use_mpris = true;
bitrate = 320;
initial_volume = 100;
volume_normalisation = true;
normalisation_pregain = -10;
};
};
};
};
catppuccin = {
enable = false;
cursors.enable = false;
cache.enable = true;
};
programs.plasma = {
workspace = {
colorScheme = "Catppuccin${config.catppuccinUpper.flavor}${config.catppuccinUpper.accent}";
cursor.theme = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors";
splashScreen.theme = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}";
};
configFile = {
kdeglobals.KDE = {
DefaultDarkLookAndFeel = "Catpppuccin-${config.catppuccinUpper.flavor}-${config.catppuccinUpper.accent}";
DefaultLightLookAndFeel = "Catpppuccin-Latte-${config.catppuccinUpper.accent}";
};
};
};
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "25.05";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
};
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "25.05";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}

View file

@ -8,23 +8,6 @@
home.packages = with pkgs; [
# catppuccin-cursors.latteDark
# catppuccin-cursors.latteLight
# catppuccin-cursors.latteBlue
# catppuccin-cursors.mochaDark
# catppuccin-cursors.mochaLight
catppuccin-cursors.mochaBlue
(catppuccin-kde.override {
flavour = [
"latte"
"mocha"
];
accents = [
"blue"
];
})
# steam gtk theming
adwsteamgtk
@ -33,25 +16,7 @@
_2ship2harkinian
];
gtk.cursorTheme = {
name = "catppuccin-mocha-blue-cursors";
package = pkgs.catppuccin-cursors.mochaBlue;
size = 24;
};
programs.plasma = {
workspace = {
colorScheme = "CatppuccinMochaBlue";
cursor.theme = "catppuccin-mocha-blue-cursors";
splashScreen.theme = "Catpppuccin-Mocha-Blue";
};
configFile = {
kdeglobals.KDE = {
DefaultDarkLookAndFeel = "Catppuccin-Mocha-Blue";
DefaultLightLookAndFeel = "Catppuccin-Latte-Blue";
};
};
panels = [
# Alternative global menu to fit the modified taskbar
{

View file

@ -3,7 +3,7 @@
{
catppuccin = {
accent = "peach";
flavor = "mocha";
flavor = "macchiato";
};
home.packages = with pkgs; [
@ -13,34 +13,10 @@
asahi-btsync
asahi-wifisync
# catppuccin-cursors.latteDark
# catppuccin-cursors.latteLight
# catppuccin-cursors.lattePeach
# catppuccin-cursors.mochaDark
# catppuccin-cursors.mochaLight
catppuccin-cursors.mochaPeach
(catppuccin-kde.override {
flavour = [
"latte"
"mocha"
];
accents = [
"peach"
];
})
moonlight-qt
];
gtk.cursorTheme = {
name = "catppuccin-mocha-peach-cursors";
package = pkgs.catppuccin-cursors.mochaPeach;
size = 24;
};
programs.plasma = {
input.touchpads = [
{
name = "Apple MTP multi-touch";
@ -54,32 +30,8 @@
}
];
workspace = {
colorScheme = "CatppuccinMochaPeach";
cursor.theme = "catppuccin-mocha-peach-cursors";
splashScreen.theme = "Catpppuccin-Mocha-Peach";
};
configFile = {
kdeglobals.KDE = {
DefaultDarkLookAndFeel = "Catppuccin-Mocha-Peach";
DefaultLightLookAndFeel = "Catppuccin-Latte-Peach";
};
};
shortcuts = {
# # my volume down key broke as hell boy
# kmix.decrease_volume = [
# "Volume Mute"
# "Volume Down"
# ];
# kmix.decrease_volume_small = [
# "Shift+Volume Mute"
# "Shift+Volume Down"
# ];
# kmix.increase_volume = "Volume Up";
# kmix.increase_volume_small = "Shift+Volume Up";
# kmix.mute = "Sleep";
# this is really annoying on asahi laptops
org_kde_powerdevil.Sleep = [ ];
};

View file

@ -6,77 +6,9 @@
flavor = "mocha";
};
home.packages = with pkgs; [
# catppuccin-cursors.latteDark
# catppuccin-cursors.latteLight
# catppuccin-cursors.latteGreen
# catppuccin-cursors.mochaDark
# catppuccin-cursors.mochaLight
catppuccin-cursors.mochaGreen
(catppuccin-kde.override {
flavour = [
"latte"
"mocha"
];
accents = [
"green"
];
})
];
gtk.cursorTheme = {
name = "catppuccin-mocha-green-cursors";
package = pkgs.catppuccin-cursors.mochaGreen;
size = 24;
};
home.packages = with pkgs; [ ];
programs.plasma = {
input.touchpads = [
{
name = "Apple MTP multi-touch";
vendorId = "05ac";
productId = "0352";
disableWhileTyping = false;
enable = true;
tapToClick = false;
naturalScroll = true;
accelerationProfile = "default";
}
];
workspace = {
colorScheme = "CatppuccinMochaGreen";
cursor.theme = "catppuccin-mocha-green-cursors";
splashScreen.theme = "Catpppuccin-Mocha-Green";
};
configFile = {
kdeglobals.KDE = {
DefaultDarkLookAndFeel = "Catppuccin-Mocha-Green";
DefaultLightLookAndFeel = "Catppuccin-Latte-Green";
};
};
shortcuts = {
# # my volume down key broke as hell boy
# kmix.decrease_volume = [
# "Volume Mute"
# "Volume Down"
# ];
# kmix.decrease_volume_small = [
# "Shift+Volume Mute"
# "Shift+Volume Down"
# ];
# kmix.increase_volume = "Volume Up";
# kmix.increase_volume_small = "Shift+Volume Up";
# kmix.mute = "Sleep";
org_kde_powerdevil.Sleep = [ ];
};
panels = [
# Application name, Global menu and Song information and playback controls at the top
{

View file

@ -2,7 +2,7 @@
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "catppuccin_mocha.theme"
color_theme = "catppuccin_blankFlavor.theme"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = True

View file

@ -10,11 +10,10 @@ let
mergedConfig = pkgs.runCommand "mergedConfig" { } ''
mkdir -p $out/themes
cp ${./btop.conf} $out/btop.conf
cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/
cp ${catppuccin-btop}/themes/catppuccin_frappe.theme $out/themes/
cp ${catppuccin-btop}/themes/catppuccin_macchiato.theme $out/themes/
cp ${catppuccin-btop}/themes/catppuccin_mocha.theme $out/themes/
${pkgs.gnused}/bin/sed 's/blankFlavor/${config.catppuccin.flavor}/g' \
${./btop.conf} > $out/btop.conf
cp ${catppuccin-btop}/themes/catppuccin_latte.theme $out/themes/
cp ${catppuccin-btop}/themes/catppuccin_${config.catppuccin.flavor}.theme $out/themes/
'';
in
{

View file

@ -1,8 +1,10 @@
{ config, lib, ... }:
{
programs.kitty = {
enable = true;
enableGitIntegration = true;
themeFile = "Catppuccin-Mocha";
themeFile = "Catppuccin-${config.catppuccinUpper.flavor}";
font = {
name = "NotoSansM Nerd Font Mono";
size = 10;
@ -10,7 +12,6 @@
shellIntegration = {
enableFishIntegration = true;
};
# extraConfig = "\nwheel_scroll_multiplier 5.0\nconfirm_os_window_close 0";
settings = {
scrollback_lines = 10000;
enable_audio_bell = false;

View file

@ -1,4 +1,4 @@
{ pkgs, ... }:
{ pkgs, config, ... }:
{
home.sessionVariables = {
@ -28,7 +28,7 @@
colorschemes.catppuccin = {
enable = true;
settings = {
flavour = "mocha";
flavour = config.catppuccin.flavor;
};
};
keymaps = [

View file

@ -63,7 +63,11 @@ in
package = pkgs.colloid-icon-theme;
};
# cursor theme handled in home/hosts/host.nix and in config.kdl
cursorTheme = {
name = "catppuccin-${config.catppuccin.flavor}-${config.catppuccin.accent}-cursors";
package = pkgs.catppuccin-cursors."${config.catppuccin.flavor}${config.catppuccinUpper.accent}";
size = 24;
};
gtk3.extraConfig = {
gtk-application-prefer-dark-theme = true;
@ -103,7 +107,6 @@ in
# };
};
# Cursor / icon env vars for GTK and Qt apps
xsession = {
enable = true; # only needed for session variable injection
windowManager.command = "niri"; # launches niri directly
@ -114,6 +117,7 @@ in
screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png";
hotkey-overlay.skip-at-startup = true;
prefer-no-csd = true;
gestures.hot-corners.enable = false;
spawn-at-startup = [
{
command = [
@ -150,6 +154,10 @@ in
drag = false;
};
};
environment = {
QT_QPA_PLATFORM = "wayland";
DISPLAY = null;
};
outputs = {
"eDP-1" = {
scale = 1.75;

View file

@ -6,10 +6,81 @@
}:
let
customPackage = pkgs.noctalia-shell-custom.override {
catppuccinFlavor = config.catppuccin.flavor;
catppuccinAccent = config.catppuccin.accent;
# Get the actual color palettes
darkPalette = pkgs.catppuccin.${config.catppuccin.flavor};
lightPalette = pkgs.catppuccin.latte;
# Create theme from palette
mkTheme = palette: accent: {
mPrimary = palette.${accent};
mOnPrimary = palette.crust;
mSecondary = palette.subtext0;
mOnSecondary = palette.crust;
mTertiary = palette.teal;
mOnTertiary = palette.crust;
mError = palette.red;
mOnError = palette.crust;
mSurface = palette.base;
mOnSurface = palette.text;
mSurfaceVariant = palette.surface0;
mOnSurfaceVariant = palette.lavender;
mOutline = palette.surface2;
mShadow = palette.crust;
mHover = palette.teal;
mOnHover = palette.crust;
};
# Build the complete color scheme
customScheme = {
dark = mkTheme darkPalette config.catppuccin.accent;
light = mkTheme lightPalette config.catppuccin.accent;
};
# Convert to JSON
schemeJson = builtins.toJSON customScheme;
# Write to file - escape for shell
schemeJsonEscaped = lib.escapeShellArg schemeJson;
customPackage = pkgs.noctalia-shell.overrideAttrs (oldAttrs: {
pname = "noctalia-shell-custom";
nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [ pkgs.jq ];
postPatch = (oldAttrs.postPatch or "") + ''
echo "Patching noctalia-shell with Cat-Custom theme..."
echo " Dark: ${config.catppuccin.flavor} / Light: latte"
echo " Accent: ${config.catppuccin.accent}"
if [ -d Assets/ColorScheme/Catppuccin ]; then
mkdir -p Assets/ColorScheme/Cat-Custom
# Write the JSON directly
cat > Assets/ColorScheme/Cat-Custom/Cat-Custom.json << 'COLORSCHEME_EOF'
${schemeJson}
COLORSCHEME_EOF
echo "Created Cat-Custom color scheme:"
${pkgs.jq}/bin/jq -C '.' Assets/ColorScheme/Cat-Custom/Cat-Custom.json || true
# Add translation entries
for lang in en fr de es pt zh-CN; do
if [ -f "Assets/Translations/$lang.json" ]; then
${pkgs.jq}/bin/jq \
'.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \
"Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp" \
&& mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json"
fi
done
else
echo "ERROR: ColorScheme directory not found"
exit 1
fi
'';
meta = oldAttrs.meta // {
description = "${oldAttrs.meta.description} (Cat-Custom: ${config.catppuccin.flavor}/${config.catppuccin.accent})";
};
});
in
{
programs.noctalia-shell = {
@ -56,17 +127,27 @@ in
hideMode = "hidden";
id = "ActiveWindow";
maxWidth = 375;
scrollingMode = "hover";
scrollingMode = "always";
showIcon = true;
useFixedWidth = false;
}
{
id = "MediaMini";
}
];
center = [
];
right = [
{
hideMode = "hidden";
hideWhenIdle = false;
id = "MediaMini";
maxWidth = 350;
scrollingMode = "always";
showAlbumArt = false;
showArtistFirst = true;
showProgressRing = true;
showVisualizer = false;
useFixedWidth = false;
visualizerType = "linear";
}
{
id = "ScreenRecorder";
}
@ -389,7 +470,7 @@ in
useWallpaperColors = false;
predefinedScheme = "Cat-Custom";
darkMode = true;
schedulingMode = "on";
schedulingMode = "off";
manualSunrise = "06:30";
manualSunset = "18:30";
matugenSchemeType = "scheme-fruit-salad";

View file

@ -1,26 +0,0 @@
@define-color rosewater #f5e0dc;
@define-color flamingo #f2cdcd;
@define-color pink #f5c2e7;
@define-color mauve #cba6f7;
@define-color red #f38ba8;
@define-color maroon #eba0ac;
@define-color peach #fab387;
@define-color yellow #f9e2af;
@define-color green #a6e3a1;
@define-color teal #94e2d5;
@define-color sky #89dceb;
@define-color sapphire #74c7ec;
@define-color blue #89b4fa;
@define-color lavender #b4befe;
@define-color text #cdd6f4;
@define-color subtext1 #bac2de;
@define-color subtext0 #a6adc8;
@define-color overlay2 #9399b2;
@define-color overlay1 #7f849c;
@define-color overlay0 #6c7086;
@define-color surface2 #585b70;
@define-color surface1 #45475a;
@define-color surface0 #313244;
@define-color base #1e1e2e;
@define-color mantle #181825;
@define-color crust #11111b;

View file

@ -1,4 +1,4 @@
@import "./mocha.css";
@import "./colors.css";
* {
border: none;
border-radius: 0;

View file

@ -1,12 +1,26 @@
{ config, pkgs, ... }:
let
catppuccin-waybar = pkgs.fetchFromGitHub {
owner = "catppuccin";
repo = "waybar";
rev = "ee8ed32b4f63e9c417249c109818dcc05a2e25da";
sha256 = "sha256-za0y6hcN2rvN6Xjf31xLRe4PP0YyHu2i454ZPjr+lWA=";
};
mergedConfig = pkgs.runCommand "mergedConfig" { } ''
mkdir -p $out
cp -rv ${./config}/* $out/
cp -v ${catppuccin-waybar}/themes/${config.catppuccin.flavor}.css $out/colors.css
'';
in
{
programs.waybar = {
enable = true;
};
home.file.".config/waybar" = {
source = ./config;
source = mergedConfig;
recursive = true;
force = true;
};

View file

@ -1,69 +0,0 @@
{
lib,
pkgs,
noctalia-shell,
catppuccinFlavor ? "mocha",
catppuccinAccent ? "mauve",
}:
let
mkTheme = colors: {
mPrimary = colors.${catppuccinAccent};
mOnPrimary = colors.crust;
mSecondary = colors.subtext0;
mOnSecondary = colors.crust;
mTertiary = colors.teal;
mOnTertiary = colors.crust;
mError = colors.red;
mOnError = colors.crust;
mSurface = colors.base;
mOnSurface = colors.text;
mSurfaceVariant = colors.surface0;
mOnSurfaceVariant = colors.lavender;
mOutline = colors.surface2;
mShadow = colors.crust;
mHover = colors.teal;
mOnHover = colors.crust;
};
customScheme = {
dark = mkTheme pkgs.catppuccin.${catppuccinFlavor};
light = mkTheme pkgs.catppuccin.latte;
};
# Convert to JSON string for writing to file
customSchemeJson = builtins.toJSON customScheme;
in
noctalia-shell.overrideAttrs (oldAttrs: {
pname = "noctalia-shell-custom";
nativeBuildInputs = (oldAttrs.nativeBuildInputs or [ ]) ++ [ pkgs.jq ];
postPatch = (oldAttrs.postPatch or "") + ''
# Create the Cat-Custom color scheme
if [ -d Assets/ColorScheme/Catppuccin ]; then
# Create Cat-Custom directory
mkdir -p Assets/ColorScheme/Cat-Custom
# Write the custom color scheme
echo '${customSchemeJson}' | ${pkgs.jq}/bin/jq '.' > Assets/ColorScheme/Cat-Custom/Cat-Custom.json
echo "Created Cat-Custom color scheme with ${catppuccinAccent} accent"
echo " Dark theme: ${catppuccinFlavor}"
echo " Light theme: latte"
else
echo "Warning: ColorScheme directory not found at expected path"
fi
# Add translations for Cat-Custom to all supported languages
for lang in en fr de es pt zh-CN; do
if [ -f "Assets/Translations/$lang.json" ]; then
${pkgs.jq}/bin/jq '.["color-scheme"].predefined.schemes["Cat-Custom"] = "Cat-Custom"' \
"Assets/Translations/$lang.json" > "Assets/Translations/$lang.json.tmp"
mv "Assets/Translations/$lang.json.tmp" "Assets/Translations/$lang.json"
echo "Added Cat-Custom translation to $lang.json"
fi
done
'';
meta = oldAttrs.meta // {
description = oldAttrs.meta.description + " (with Cat-Custom Catppuccin theme)";
};
})

View file

@ -24,10 +24,6 @@ final: prev: {
inherit helium-widevine;
};
noctalia-shell-custom = prev.callPackage (builtins.path {
path = ./noctalia-shell-custom/package.nix;
}) { };
spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { };
widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { };