From 8e636ef9bd8f593ffa3973e61c4678024dbafe7c Mon Sep 17 00:00:00 2001 From: LRFLEW Date: Wed, 3 Jun 2026 07:54:06 -0500 Subject: [PATCH] openrct2: refactor assets for `overrideAttrs` support --- pkgs/by-name/op/openrct2/package.nix | 77 ++++++++++++++-------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/pkgs/by-name/op/openrct2/package.nix b/pkgs/by-name/op/openrct2/package.nix index be286fd2d175..0d783b61fa38 100644 --- a/pkgs/by-name/op/openrct2/package.nix +++ b/pkgs/by-name/op/openrct2/package.nix @@ -40,29 +40,6 @@ rct2Path ? null, }: -let - objects-version = "1.7.10"; - openmusic-version = "1.6.1"; - opensfx-version = "1.0.6"; - title-sequences-version = "0.4.26"; - - objects = fetchurl { - url = "https://github.com/OpenRCT2/objects/releases/download/v${objects-version}/objects.zip"; - hash = "sha256-9IO+Jm3CIHe6hRe78y/+OIw1Q7LuWF4K+9QQLbRSgCE="; - }; - openmusic = fetchurl { - url = "https://github.com/OpenRCT2/OpenMusic/releases/download/v${openmusic-version}/openmusic.zip"; - hash = "sha256-mUs1DTsYDuHLlhn+J/frrjoaUjKEDEvUeonzP6id4aE="; - }; - opensfx = fetchurl { - url = "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${opensfx-version}/opensound.zip"; - hash = "sha256-BrkPPhnCFnUt9EHVUbJqnj4bp3Vb3SECUEtzv5k2CL4="; - }; - title-sequences = fetchurl { - url = "https://github.com/OpenRCT2/title-sequences/releases/download/v${title-sequences-version}/title-sequences.zip"; - hash = "sha256-2ruXh7FXY0L8pN2fZLP4z6BKfmzpwruWEPR7dikFyFg="; - }; -in stdenv.mkDerivation (finalAttrs: { pname = "openrct2"; version = "0.5.3"; @@ -77,6 +54,34 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-my7fPBD5N0bO1yPaxwHUFqw6TvayQs10kcAX/NqPpIg="; }; + passthru = { + updateScript = ./update.sh; + + objects-version = "1.7.10"; + openmusic-version = "1.6.1"; + opensfx-version = "1.0.6"; + title-sequences-version = "0.4.26"; + + assets = { + objects = fetchurl { + url = "https://github.com/OpenRCT2/objects/releases/download/v${finalAttrs.passthru.objects-version}/objects.zip"; + hash = "sha256-9IO+Jm3CIHe6hRe78y/+OIw1Q7LuWF4K+9QQLbRSgCE="; + }; + openmusic = fetchurl { + url = "https://github.com/OpenRCT2/OpenMusic/releases/download/v${finalAttrs.passthru.openmusic-version}/openmusic.zip"; + hash = "sha256-mUs1DTsYDuHLlhn+J/frrjoaUjKEDEvUeonzP6id4aE="; + }; + opensfx = fetchurl { + url = "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${finalAttrs.passthru.opensfx-version}/opensound.zip"; + hash = "sha256-BrkPPhnCFnUt9EHVUbJqnj4bp3Vb3SECUEtzv5k2CL4="; + }; + title-sequences = fetchurl { + url = "https://github.com/OpenRCT2/title-sequences/releases/download/v${finalAttrs.passthru.title-sequences-version}/title-sequences.zip"; + hash = "sha256-2ruXh7FXY0L8pN2fZLP4z6BKfmzpwruWEPR7dikFyFg="; + }; + }; + }; + nativeBuildInputs = [ cmake pkg-config @@ -122,25 +127,21 @@ stdenv.mkDerivation (finalAttrs: { postUnpack = '' mkdir -p $sourceRoot/data/{object,sequence} - unzip -o ${objects} -d $sourceRoot/data/object - unzip -o ${openmusic} -d $sourceRoot/data - unzip -o ${opensfx} -d $sourceRoot/data - unzip -o ${title-sequences} -d $sourceRoot/data/sequence + unzip -o ${finalAttrs.passthru.assets.objects} -d $sourceRoot/data/object + unzip -o ${finalAttrs.passthru.assets.openmusic} -d $sourceRoot/data + unzip -o ${finalAttrs.passthru.assets.opensfx} -d $sourceRoot/data + unzip -o ${finalAttrs.passthru.assets.title-sequences} -d $sourceRoot/data/sequence ''; preConfigure = # Verify that the correct version of each third party repository is used. ( - let - versionCheck = assetKey: url: '' - grep -qF '"${url}"' assets.json \ - || (echo "${assetKey} differs from expected version!"; exit 1) - ''; - in - (versionCheck "objects" objects.url) - + (versionCheck "openmusic" openmusic.url) - + (versionCheck "opensfx" opensfx.url) - + (versionCheck "title-sequences" title-sequences.url) + lib.concatStringsSep "\n" ( + lib.mapAttrsToList (assetName: asset: '' + grep -qF '"${asset.url}"' assets.json \ + || (echo "${assetName} differs from expected version!"; exit 1) + '') finalAttrs.passthru.assets + ) ); doInstallCheck = true; @@ -151,8 +152,6 @@ stdenv.mkDerivation (finalAttrs: { ${lib.optionalString (rct2Path != null) "--add-flags '--rct2-data-path=\"${rct2Path}\"'"} ''; - passthru.updateScript = ./update.sh; - meta = { description = "Open source re-implementation of RollerCoaster Tycoon 2"; longDescription = ''