diff --git a/packages/proton-ge-bin-9/default.nix b/packages/proton-ge-bin-9/default.nix new file mode 100644 index 0000000..083905f --- /dev/null +++ b/packages/proton-ge-bin-9/default.nix @@ -0,0 +1,81 @@ +{ + lib, + stdenvNoCC, + fetchzip, + writeScript, + # Can be overridden to alter the display name in steam + # This could be useful if multiple versions should be installed together + steamDisplayName ? "GE-Proton", +}: +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "proton-ge-bin-9"; + version = "GE-Proton9-27"; + + src = fetchzip { + url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${finalAttrs.version}/${finalAttrs.version}.tar.gz"; + hash = "sha256-70au1dx9co3X+X7xkBCDGf1BxEouuw3zN+7eDyT7i5c="; + }; + + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + outputs = [ + "out" + "steamcompattool" + ]; + + installPhase = '' + runHook preInstall + + # Make it impossible to add to an environment. You should use the appropriate NixOS option. + # Also leave some breadcrumbs in the file. + echo "${finalAttrs.pname} should not be installed into environments. Please use programs.steam.extraCompatPackages instead." > $out + + mkdir $steamcompattool + ln -s $src/* $steamcompattool + rm $steamcompattool/compatibilitytool.vdf + cp $src/compatibilitytool.vdf $steamcompattool + + runHook postInstall + ''; + + preFixup = '' + substituteInPlace "$steamcompattool/compatibilitytool.vdf" \ + --replace-fail "${finalAttrs.version}" "${steamDisplayName}" + ''; + + /* + We use the created releases, and not the tags, for the update script as nix-update loads releases.atom + that contains both. Sometimes upstream pushes the tags but the Github releases don't get created due to + CI errors. Last time this happened was on 8-33, where a tag was created but no releases were created. + As of 2024-03-13, there have been no announcements indicating that the CI has been fixed, and thus + we avoid nix-update-script and use our own update script instead. + See: + */ + passthru.updateScript = writeScript "update-proton-ge" '' + #!/usr/bin/env nix-shell + #!nix-shell -i bash -p curl jq common-updater-scripts + repo="https://api.github.com/repos/GloriousEggroll/proton-ge-custom/releases" + version="$(curl -sL "$repo" | jq 'map(select(.prerelease == false)) | .[0].tag_name' --raw-output)" + update-source-version proton-ge-bin "$version" + ''; + + meta = { + description = '' + Compatibility tool for Steam Play based on Wine and additional components. + + (This is intended for use in the `programs.steam.extraCompatPackages` option only.) + ''; + homepage = "https://github.com/GloriousEggroll/proton-ge-custom"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ + NotAShelf + Scrumplex + shawn8901 + ]; + platforms = [ "x86_64-linux" ]; + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; + }; +}) +