about summary refs log tree commit diff
path: root/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix')
-rw-r--r--nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix70
1 files changed, 36 insertions, 34 deletions
diff --git a/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix b/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix
index b9bc042dd09c..47cdc6e8ce9c 100644
--- a/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix
+++ b/nixpkgs/pkgs/data/themes/catppuccin-gtk/default.nix
@@ -2,69 +2,71 @@
 , stdenvNoCC
 , fetchFromGitHub
 , gtk3
+, colloid-gtk-theme
 , gnome-themes-extra
 , gtk-engine-murrine
+, python3
 , sassc
-, which
-, tweaks ? [ ]
+, accents ? [ "blue" ]
 , size ? "standard"
+, tweaks ? [ ]
+, variant ? "frappe"
 }:
 let
+  validAccents = [ "blue" "flamingo" "green" "lavender" "maroon" "mauve" "peach" "pink" "red" "rosewater" "sapphire" "sky" "teal" "yellow" ];
   validSizes = [ "standard" "compact" ];
-  validTweaks = [ "nord" "dracula" "black" "rimless" "normal" ];
-
-  unknownTweaks = lib.subtractLists validTweaks tweaks;
-  illegalMix = !(lib.elem "nord" tweaks) && !(lib.elem "dracula" tweaks);
-
-  assertIllegal = lib.assertMsg illegalMix ''
-    Tweaks "nord" and "dracula" cannot be mixed. Tweaks: ${toString tweaks}
-  '';
-
-  assertSize = lib.assertMsg (lib.elem size validSizes) ''
-    You entered a wrong size: ${size}
-    Valid sizes are: ${toString validSizes}
-  '';
+  validTweaks = [ "black" "rimless" "normal" ];
+  validVariants = [ "latte" "frappe" "macchiato" "mocha" ];
 
-  assertUnknown = lib.assertMsg (unknownTweaks == [ ]) ''
-    You entered wrong tweaks: ${toString unknownTweaks}
-    Valid tweaks are: ${toString validTweaks}
-  '';
+  pname = "catppuccin-gtk";
 in
 
-assert assertIllegal;
-assert assertSize;
-assert assertUnknown;
+lib.checkListOfEnum "${pname}: theme accent" validAccents accents
+lib.checkListOfEnum "${pname}: color variant" validVariants [variant]
+lib.checkListOfEnum "${pname}: size variant" validSizes [size]
+lib.checkListOfEnum "${pname}: tweaks" validTweaks tweaks
 
 stdenvNoCC.mkDerivation rec {
-  pname = "catppuccin-gtk";
-  version = "unstable-2022-08-01";
+  inherit pname;
+  version = "0.4.1";
 
   src = fetchFromGitHub {
-    repo = "gtk";
     owner = "catppuccin";
-    rev = "87a79fd2bf07accc694455df30a32a82b1b31f4f";
-    sha256 = "sha256-dKHTQva0BYkO6VPNfY/pzRn/V1ghX+tYqbnM9hTAMeE=";
+    repo = "gtk";
+    rev = "v${version}";
+    sha256 = "sha256-dzRXt9/OdPyiy3mu9pmPYeu69OXCnR+zEqbD1C5BKqM=";
   };
 
-  nativeBuildInputs = [ gtk3 sassc which ];
+  nativeBuildInputs = [ gtk3 sassc ];
 
-  buildInputs = [ gnome-themes-extra ];
+  buildInputs = [
+    gnome-themes-extra
+    (python3.withPackages (ps: [ ps.catppuccin ]))
+  ];
 
   propagatedUserEnvPkgs = [ gtk-engine-murrine ];
 
+  postUnpack = ''
+    rm -rf source/colloid
+    cp -r ${colloid-gtk-theme.src} source/colloid
+    chmod -R +w source/colloid
+  '';
+
   postPatch = ''
-    patchShebangs --build clean-old-theme.sh install.sh
+    patchShebangs --build colloid/clean-old-theme.sh colloid/install.sh
   '';
 
   installPhase = ''
     runHook preInstall
 
+    mkdir -p $out/share/themes
     export HOME=$(mktemp -d)
 
-    mkdir -p $out/share/themes
-    bash install.sh -d $out/share/themes -t all \
-      ${lib.optionalString (size != "") "-s ${size}"} \
-      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks}
+    python3 install.py ${variant} \
+      ${lib.optionalString (accents != []) "--accent " + builtins.toString accents} \
+      ${lib.optionalString (size != []) "--size " + size} \
+      ${lib.optionalString (tweaks != []) "--tweaks " + builtins.toString tweaks} \
+      --dest $out/share/themes
 
     runHook postInstall
   '';