{ lib, stdenv, fetchFromGitHub, gtk-engine-murrine, jdupes, sassc, accent ? ["default"], shade ? "dark", size ? "standard", tweaks ? [], }: let validAccents = ["default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all"]; validShades = ["light" "dark"]; validSizes = ["standard" "compact"]; validTweaks = ["frappe" "macchiato" "black" "float" "outline" "macos"]; single = x: lib.optional (x != null) x; pname = "Catppuccin-GTK"; in lib.checkListOfEnum "${pname} Valid theme accent(s)" validAccents accent lib.checkListOfEnum "${pname} Valid shades" validShades (single shade) lib.checkListOfEnum "${pname} Valid sizes" validSizes (single size) lib.checkListOfEnum "${pname} Valid tweaks" validTweaks tweaks stdenv.mkDerivation { pname = "magnetic-${lib.toLower pname}"; version = "0-unstable-2024-06-27"; src = fetchFromGitHub { owner = "Fausto-Korpsvart"; repo = "Catppuccin-GTK-Theme"; rev = "0bd2869e7f0fdb36c720a4fb873d4fed361b0606"; hash = "sha256-oFVsYrJ27hYGY+x9+Z4SxVCp3w6PiLYTZaxmGhnpVHQ="; }; nativeBuildInputs = [jdupes sassc]; propagatedUserEnvPkgs = [gtk-engine-murrine]; postPatch = '' find -name "*.sh" -print0 | while IFS= read -r -d ''' file; do patchShebangs "$file" done ''; dontBuild = true; installPhase = '' runHook preInstall mkdir -p $out/share/themes ./themes/install.sh \ --name ${pname} \ ${toString (map (x: "--theme " + x) accent)} \ ${lib.optionalString (shade != null) ("--color " + shade)} \ ${lib.optionalString (size != null) ("--size " + size)} \ ${toString (map (x: "--tweaks " + x) tweaks)} \ --dest $out/share/themes jdupes --quiet --link-soft --recurse $out/share runHook postInstall ''; meta = with lib; { description = "GTK Theme with Catppuccin colour scheme"; homepage = "https://github.com/Fausto-Korpsvart/Catppuccin-GTK-Theme"; license = licenses.gpl3Only; maintainers = with maintainers; [ icy-thought ]; platforms = platforms.all; }; }