diff --git a/pkgs/by-name/op/openrct2/package.nix b/pkgs/by-name/op/openrct2/package.nix index 32793088324e..52bab92c1a8f 100644 --- a/pkgs/by-name/op/openrct2/package.nix +++ b/pkgs/by-name/op/openrct2/package.nix @@ -2,6 +2,8 @@ lib, stdenv, fetchFromGitHub, + fetchurl, + unzip, SDL2, cmake, @@ -14,6 +16,7 @@ freetype, gbenchmark, icu, + innoextract, jansson, libGLU, libiconv, @@ -30,7 +33,7 @@ }: let - openrct2-version = "0.4.19.1"; + openrct2-version = "0.4.20"; # Those versions MUST match the pinned versions within the CMakeLists.txt # file. The REPLAYS repository from the CMakeLists.txt is not necessary. @@ -39,50 +42,38 @@ let opensfx-version = "1.0.5"; title-sequences-version = "0.4.14"; - openrct2-src = fetchFromGitHub { - owner = "OpenRCT2"; - repo = "OpenRCT2"; - rev = "v${openrct2-version}"; - hash = "sha256-sg09JmoWF9utPG7PakKpgLgX64FAc2x8ILX3lVHkRi0="; + objects = fetchurl { + url = "https://github.com/OpenRCT2/objects/releases/download/v${objects-version}/objects.zip"; + hash = "sha256-xrgAy817G5xwfzZX+8Xy2508/Zwq32aKzMndus14Qd8="; }; - - objects-src = fetchFromGitHub { - owner = "OpenRCT2"; - repo = "objects"; - rev = "v${objects-version}"; - hash = "sha256-mxlabWuh8TTJs74yXdiv7XtdeGmCWQ5N1JoY7Xo0itQ="; + openmsx = fetchurl { + url = "https://github.com/OpenRCT2/OpenMusic/releases/download/v${openmsx-version}/openmusic.zip"; + hash = "sha256-8JfTpMzTn3VG+X2z7LG4vnNkj1O3p1lbhszL3Bp1V+Q="; }; - - openmsx-src = fetchFromGitHub { - owner = "OpenRCT2"; - repo = "OpenMusic"; - rev = "v${openmsx-version}"; - hash = "sha256-KjWJSB2tdE0ExswVlz0dLXNPhLJ1kI6VZb3vqXQfx8w="; + opensfx = fetchurl { + url = "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${opensfx-version}/opensound.zip"; + hash = "sha256-qVIUi+FkwSjk/TrqloIuXwUe3ZoLHyyE3n92KM47Lhg="; }; - - opensfx-src = fetchFromGitHub { - owner = "OpenRCT2"; - repo = "OpenSoundEffects"; - rev = "v${opensfx-version}"; - hash = "sha256-ucADnMLGm36eAo+NiioxEzeMqtu7YbGF9wsydK1mmoE="; - }; - - title-sequences-src = fetchFromGitHub { - owner = "OpenRCT2"; - repo = "title-sequences"; - rev = "v${title-sequences-version}"; - hash = "sha256-ier7sBYJjBIvKVxfaCelJPZ+oF9NEshvR2k/X9JpP+0="; + title-sequences = fetchurl { + url = "https://github.com/OpenRCT2/title-sequences/releases/download/v${title-sequences-version}/title-sequences.zip"; + hash = "sha256-FA33FOgG/tQRzEl2Pn8WsPzypIelcAHR5Q/Oj5FIqfM="; }; in -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "openrct2"; version = openrct2-version; - src = openrct2-src; + src = fetchFromGitHub { + owner = "OpenRCT2"; + repo = "OpenRCT2"; + rev = "v${openrct2-version}"; + hash = "sha256-G/uD3t8m7C74pjSA6dbz4gzu9CwEpmyFwtYpoFIiRjM="; + }; nativeBuildInputs = [ cmake pkg-config + unzip ]; buildInputs = [ @@ -96,6 +87,7 @@ stdenv.mkDerivation { freetype gbenchmark icu + innoextract jansson libGLU libiconv @@ -118,12 +110,17 @@ stdenv.mkDerivation { ]; postUnpack = '' - mkdir -p $sourceRoot/data/assetpack + mkdir -p $sourceRoot/data/{object,sequence} + unzip -o ${objects} -d $sourceRoot/data/object + unzip -o ${openmsx} -d $sourceRoot/data + unzip -o ${opensfx} -d $sourceRoot/data + unzip -o ${title-sequences} -d $sourceRoot/data/sequence + ''; - cp -r ${objects-src} $sourceRoot/data/object - cp -r ${openmsx-src} $sourceRoot/data/assetpack/openrct2.music.alternative.parkap - cp -r ${opensfx-src} $sourceRoot/data/assetpack/openrct2.sound.parkap - cp -r ${title-sequences-src} $sourceRoot/data/sequence + # Fix blank changelog & contributors screen. See https://github.com/OpenRCT2/OpenRCT2/issues/16988 + postPatch = '' + substituteInPlace src/openrct2/platform/Platform.Linux.cpp \ + --replace-fail "/usr/share/doc/openrct2" "$out/share/doc/openrct2" ''; preConfigure = @@ -141,12 +138,15 @@ stdenv.mkDerivation { + (versionCheck "TITLE_SEQUENCE" title-sequences-version) ); - meta = with lib; { + meta = { description = "Open source re-implementation of RollerCoaster Tycoon 2 (original game required)"; homepage = "https://openrct2.io/"; downloadPage = "https://github.com/OpenRCT2/OpenRCT2/releases"; - license = licenses.gpl3Only; - platforms = platforms.linux; - maintainers = with maintainers; [ oxzi ]; + license = lib.licenses.gpl3Only; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ + oxzi + keenanweaver + ]; }; -} +})