summary refs log tree commit diff
path: root/pkgs/data
diff options
context:
space:
mode:
authorNick Cao <nickcao@nichi.co>2023-04-22 11:22:26 +0800
committerGitHub <noreply@github.com>2023-04-22 11:22:26 +0800
commitc1c3523383ee4558b5ff94f5f2d261c79461db23 (patch)
tree52cbea7db69035dcc0ece7d920eac0e5937d1dfa /pkgs/data
parent8dafae7c03d6aa8c2ae0a0612fbcb47e994e3fb8 (diff)
parent220be6650e7da168582b379e88e5332a20819b3e (diff)
downloadnixpkgs-c1c3523383ee4558b5ff94f5f2d261c79461db23.tar
nixpkgs-c1c3523383ee4558b5ff94f5f2d261c79461db23.tar.gz
nixpkgs-c1c3523383ee4558b5ff94f5f2d261c79461db23.tar.bz2
nixpkgs-c1c3523383ee4558b5ff94f5f2d261c79461db23.tar.lz
nixpkgs-c1c3523383ee4558b5ff94f5f2d261c79461db23.tar.xz
nixpkgs-c1c3523383ee4558b5ff94f5f2d261c79461db23.tar.zst
nixpkgs-c1c3523383ee4558b5ff94f5f2d261c79461db23.zip
Merge pull request #215569 from michaelBelsanti/catppuccin-kde
catppuccin-kde: unstable-2022-11-26 -> 0.2.2
Diffstat (limited to 'pkgs/data')
-rw-r--r--pkgs/data/themes/catppuccin-kde/default.nix37
-rwxr-xr-xpkgs/data/themes/catppuccin-kde/install.sh263
2 files changed, 293 insertions, 7 deletions
diff --git a/pkgs/data/themes/catppuccin-kde/default.nix b/pkgs/data/themes/catppuccin-kde/default.nix
index b31b075a8fc..d2f7caa5233 100644
--- a/pkgs/data/themes/catppuccin-kde/default.nix
+++ b/pkgs/data/themes/catppuccin-kde/default.nix
@@ -1,24 +1,47 @@
 { lib
 , stdenvNoCC
 , fetchFromGitHub
+, flavour ? [ "frappe" ]
+, accents ? [ "blue" ]
+, winDecStyles ? [ "modern" ]
 }:
 
+let
+  validFlavours = [ "mocha" "macchiato" "frappe" "latte" ];
+  validAccents = [ "rosewater" "flamingo" "pink" "mauve" "red" "maroon" "peach" "yellow" "green" "teal" "sky" "sapphire" "blue" "lavender" ];
+  validWinDecStyles = [ "modern" "classic" ];
+
+  installScript = ./install.sh;
+in
+
+  lib.checkListOfEnum "Invalid accent, valid accents are ${toString validAccents}" validAccents accents
+  lib.checkListOfEnum "Invalid flavour, valid flavours are ${toString validFlavours}" validFlavours flavour
+  lib.checkListOfEnum "Invalid window decoration style, valid styles are ${toString validWinDecStyles}" validWinDecStyles winDecStyles
+
 stdenvNoCC.mkDerivation rec {
   pname = "kde";
-  version = "unstable-2022-11-26";
+  version = "0.2.2";
 
   src = fetchFromGitHub {
     owner = "catppuccin";
     repo = pname;
-    rev = "249df3ec0cdae79af379f4a10b802c50feac89ba";
-    hash = "sha256-CH9GJnFqqdyIzW7VfGb3oB1YPULEZsfK3d1eyFALwKc=";
+    rev = "v${version}";
+    hash = "sha256-P5mLLaQzMhG6aHvAj9SizUFQFLjqNKj1T1kQ4dgiacI=";
   };
 
   installPhase = ''
-    mkdir -p $out/share/{plasma/look-and-feel,color-schemes}
-    find . -type f -name "Catppuccin*.colors" -exec cp "{}" $out/share/color-schemes \;
-    find . -type f -name "*.tar.gz" -exec tar -xzf "{}" \;
-    cp -R Catppuccin-* $out/share/plasma/look-and-feel
+    runHook preInstall
+
+    patchShebangs .
+    for WINDECSTYLE in ${toString winDecStyles}; do
+      for FLAVOUR in ${toString flavour}; do
+        for ACCENT in ${toString accents}; do
+          FLAVOUR=$FLAVOUR ACCENT=$ACCENT WINDECSTYLE=$WINDECSTYLE bash ${installScript}
+        done;
+      done;
+    done;
+
+    runHook postInstall
   '';
 
   meta = with lib; {
diff --git a/pkgs/data/themes/catppuccin-kde/install.sh b/pkgs/data/themes/catppuccin-kde/install.sh
new file mode 100755
index 00000000000..dec90274b45
--- /dev/null
+++ b/pkgs/data/themes/catppuccin-kde/install.sh
@@ -0,0 +1,263 @@
+COLORDIR=$out/share/color-schemes
+AURORAEDIR=$out/share/aurorae/themes
+LOOKANDFEELDIR=$out/share/plasma/look-and-feel
+DESKTOPTHEMEDIR=$out/share/plasma/desktoptheme
+
+FLAVOUR=${FLAVOUR^}
+ACCENT=${ACCENT^}
+WINDECSTYLE=${WINDECSTYLE^}
+
+echo "Creating theme directories.."
+mkdir -p $COLORDIR
+mkdir -p $AURORAEDIR
+mkdir -p $LOOKANDFEELDIR
+mkdir -p $DESKTOPTHEMEDIR
+mkdir ./dist
+
+# Sets accent based on the pallet selected (Best to fold this in your respective editor)
+if [[ $ACCENT == "Rosewater" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#f5e0dc
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#f4dbd6
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#f2d5cf
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#dc8a78
+    fi
+    echo "Accent Rosewater(1) was selected!"
+elif [[ $ACCENT == "Flamingo" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#f2cdcd
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#f0c6c6
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#eebebe
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#dd7878
+    fi
+    echo "Accent Flamingo(2) was selected!"
+    ACCENT="2"
+elif [[ $ACCENT == "Pink" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#f5c2e7
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#f5bde6
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#f4b8e4
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#ea76cb
+    fi
+    echo "Accent Pink(3) was selected!"
+elif [[ $ACCENT == "Mauve" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#cba6f7
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#c6a0f6
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#ca9ee6
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#8839ef
+    fi
+    echo "Accent Mauve(4) was selected!"
+elif [[ $ACCENT == "Red" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#f38ba8
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#ed8796
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#e78284
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#d20f39
+    fi
+    echo "Accent Red(5) was selected!"
+elif [[ $ACCENT == "Maroon" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#eba0ac
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#ee99a0
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#ea999c
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#e64553
+    fi
+    echo "Accent Maroon(6) was selected!"
+elif [[ $ACCENT == "Peach" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#fab387
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#f5a97f
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#ef9f76
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#fe640b
+    fi
+    echo "Accent Peach(7) was selected!"
+elif [[ $ACCENT == "Yellow" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#f9e2af
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#eed49f
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#e5c890
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#df8e1d
+    fi
+    echo "Accent Yellow(8) was selected!"
+elif [[ $ACCENT == "Green" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#a6e3a1
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#a6da95
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#a6d189
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#40a02b
+    fi
+    echo "Accent Green(9) was selected!"
+elif [[ $ACCENT == "Teal" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#94e2d5
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#8bd5ca
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#81c8be
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#179299
+    fi
+    echo "Accent Teal(10) was selected!"
+elif [[ $ACCENT == "Sky" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#89dceb
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#91d7e3
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#99d1db
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#04a5e5
+    fi
+    echo "Accent Sky(11) was selected!"
+elif [[ $ACCENT == "Sapphire" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#74c7ec
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#7dc4e4
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#85c1dc
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#209fb5
+    fi
+    echo "Accent Sapphire(12) was selected!"
+elif [[ $ACCENT == "Blue" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#89b4fa
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#8aadf4
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#8caaee
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#1e66f5
+    fi
+    echo "Accent Blue(13) was selected!"
+elif [[ $ACCENT == "Lavender" ]]; then
+    if [[ $FLAVOUR == "Mocha" ]]; then
+        ACCENTCOLOR=#b4befe
+    elif [[ $FLAVOUR == "Macchiato" ]]; then
+        ACCENTCOLOR=#b7bdf8
+    elif [[ $FLAVOUR == "Frappe" ]]; then
+        ACCENTCOLOR=#babbf1
+    elif [[ $FLAVOUR == "Latte" ]]; then
+        ACCENTCOLOR=#7287fd
+    fi
+    echo "Accent Lavender(14) was selected!"
+else echo "Not a valid accent" && exit
+fi
+
+if [[ $WINDECSTYLE == "Modern" ]]; then
+    WINDECSTYLECODE=__aurorae__svg__Catppuccin$FLAVOUR-Modern
+elif [[ $WINDECSTYLE == "Classic" ]]; then
+    WINDECSTYLECODE=__aurorae__svg__Catppuccin$FLAVOUR-Classic
+fi
+
+function ModifyLightlyPlasma {
+
+    rm -rf $DESKTOPTHEMEDIR/lightly-plasma-git/icons/*
+    rm -rf $DESKTOPTHEMEDIR/lightly-plasma-git/translucent
+    rm $DESKTOPTHEMEDIR/lightly-plasma-git/widgets/tabbar.svgz
+    rm $DESKTOPTHEMEDIR/lightly-plasma-git/dialogs/background.svgz
+
+    # Copy Patches
+    cp $DESKTOPTHEMEDIR/lightly-plasma-git/solid/* $DESKTOPTHEMEDIR/lightly-plasma-git -Rf
+    cp ./Patches/glowbar.svg $DESKTOPTHEMEDIR/lightly-plasma-git/widgets -rf
+    cp ./Patches/background.svg $DESKTOPTHEMEDIR/lightly-plasma-git/widgets -rf
+    cp ./Patches/panel-background.svgz $DESKTOPTHEMEDIR/lightly-plasma-git/widgets
+
+    # Modify description to state that it has been modified by the KDE Catppuccin Installer
+    sed -e s/A\ plasma\ style\ with\ close\ to\ the\ look\ of\ the\ newest\ Lightly./*MODIFIED\ BY\ CATPPUCCIN\ KDE\ INSTALLER*\ A\ plasma\ style\ with\ close\ to\ the\ look\ of\ the\ newest\ Lightly./g $DESKTOPTHEMEDIR/lightly-plasma-git/metadata.desktop >> $DESKTOPTHEMEDIR/lightly-plasma-git/newMetadata.desktop
+    cp -f $DESKTOPTHEMEDIR/metadata.desktop $DESKTOPTHEMEDIR/lightly-plasma-git/metadata.desktop && rm $DESKTOPTHEMEDIR/metadata.desktop
+}
+
+function AuroraeInstall {
+    if [[ $WINDECSTYLE == "Modern" ]]; then
+        cp ./Resources/aurorae/Catppuccin$FLAVOUR-Modern $AURORAEDIR -r;
+    elif [[ $WINDECSTYLE == "Classic" ]]; then
+        cp ./Resources/aurorae/Catppuccin$FLAVOUR-Classic $AURORAEDIR -r;
+    fi
+}
+
+function BuildColorscheme {
+    # Add Metadata & Replace Accent in colors file
+    sed -e s/--accentColor/$ACCENTCOLOR/g -e s/--flavour/$FLAVOUR/g -e s/--accentName/$ACCENT/g ./Resources/base.colors > ./dist/base.colors
+    # Hydrate Metadata with Pallet + Accent Info
+    sed -e s/--accentName/$ACCENT/g -e s/--flavour/$FLAVOUR/g ./Resources/metadata.desktop > ./dist/Catppuccin-$FLAVOUR-$ACCENT/metadata.desktop
+    # Modify 'defaults' to set the correct Aurorae Theme
+    sed -e s/--accentName/$ACCENT/g -e s/--flavour/$FLAVOUR/g -e s/--aurorae/$WINDECSTYLECODE/g ./Resources/defaults > ./dist/Catppuccin-$FLAVOUR-$ACCENT/contents/defaults
+    # Hydrate Dummy colors according to Pallet
+    FLAVOURNAME=$FLAVOUR ACCENTNAME=$ACCENT ./Installer/color-build.sh -o ./dist/Catppuccin$FLAVOUR$ACCENT.colors -s ./dist/base.colors
+}
+
+function BuildSplashScreen {
+    # Hydrate Dummy colors according to Pallet
+    FLAVOURNAME=$FLAVOUR ./Installer/color-build.sh -s ./Resources/splash/images/busywidget.svg -o ./dist/$GLOBALTHEMENAME/contents/splash/images/_busywidget.svg
+    # Replace Accent in colors file
+    sed ./dist/$GLOBALTHEMENAME/contents/splash/images/_busywidget.svg -e s/REPLACE--ACCENT/$ACCENTCOLOR/g > ./dist/$GLOBALTHEMENAME/contents/splash/images/busywidget.svg
+    # Cleanup temporary file
+    rm ./dist/$GLOBALTHEMENAME/contents/splash/images/_busywidget.svg
+    # Hydrate Dummy colors according to Pallet (QML file)
+    FLAVOURNAME=$FLAVOUR ./Installer/color-build.sh -s ./Resources/splash/Splash.qml -o ./dist/$GLOBALTHEMENAME/contents/splash/Splash.qml
+    # Add CTP Logo
+    # TODO: Switch between latte & mocha logo based on Pallet
+    cp ./Resources/splash/images/Logo.png ./dist/$GLOBALTHEMENAME/contents/splash/images
+}
+
+# Prepare Global Theme Folder
+GLOBALTHEMENAME="Catppuccin-$FLAVOUR-$ACCENT"
+cp -r ./Resources/Catppuccin-$FLAVOUR-Global ./dist/$GLOBALTHEMENAME
+mkdir -p ./dist/$GLOBALTHEMENAME/contents/splash/images
+
+# Build SplashScreen
+echo "Building SplashScreen.."
+BuildSplashScreen
+
+# Build Colorscheme
+echo "Building Colorscheme.."
+# Generate Color scheme
+BuildColorscheme
+
+# Install Colorscheme
+echo "Installing Colorscheme.."
+mv ./dist/Catppuccin$FLAVOUR$ACCENT.colors $COLORDIR
+
+# Install Global Theme.
+echo "Installing Global Theme.."
+cp -r ./dist/$GLOBALTHEMENAME $LOOKANDFEELDIR
+
+# echo "Modifying lightly plasma theme.."
+# ModifyLightlyPlasma
+
+echo "Installing aurorae theme.."
+AuroraeInstall
+
+# Cleanup
+echo "Cleaning up.."
+rm -rf ./dist