{ callPackage, stdenvNoCC, lib, fetchurl, fetchzip, # Required versionFilename ? "cachyos-v4-version.json", owner ? "CachyOS", repo ? "proton-cachyos", # Optional withUpdateScript ? true, toolTitle ? null, toolPattern ? "proton-.*", tarballPrefix ? "proton-", tarballSuffix ? "-x86_64_v4.tar.xz", releasePrefix ? "cachyos-", releaseSuffix ? "-slr", version ? lib.trivial.importJSON ./${versionFilename}, releaseVersion ? "${releasePrefix}${version.base}-${version.release}${releaseSuffix}", homepage ? "https://github.com/${owner}/${repo}", url ? "${homepage}/releases/download/${releaseVersion}/${tarballPrefix}${releaseVersion}${tarballSuffix}", }: let intake = if lib.strings.hasSuffix ".zip" url then { fetcher = fetchzip; input = "$src/*.tar.xz"; } else { fetcher = fetchurl; input = "$src"; }; in stdenvNoCC.mkDerivation { name = repo; version = "${version.base}.${version.release}"; src = intake.fetcher { inherit url; inherit (version) hash; }; buildCommand = '' mkdir -p $out/bin tar -C $out/bin --strip=1 -x -f ${intake.input} '' # Allow to keep the same name between updates + lib.strings.optionalString (toolTitle != null) '' sed -i -r 's|"${toolPattern}"|"${toolTitle}"|' $out/bin/compatibilitytool.vdf ''; passthru = if withUpdateScript then { updateScript = callPackage ./update.nix { inherit tarballPrefix tarballSuffix releasePrefix releaseSuffix versionFilename owner repo ; }; } else { }; meta = with lib; { inherit homepage; description = "Compatibility tool for Steam Play based on Wine and additional components (patched and built by ${owner})"; license = licenses.bsd3; platforms = [ "x86_64-linux" ]; maintainers = with maintainers; [ pedrohlc ]; }; }