diff options
author | ZerataX <mail@zera.tax> | 2020-11-26 23:08:51 +0100 |
---|---|---|
committer | LluĂs Batlle i Rossell <viric@viric.name> | 2022-05-12 23:03:45 +0200 |
commit | e8e144a22a313a4618c6384d13ef55d8c8cfba3c (patch) | |
tree | 1f13773c98e036f84273f90539b42fab2cfbb22e /pkgs/games/srb2 | |
parent | b3f1be780c0ce7d65682b76e6465f10b26dad8d5 (diff) |
srb2: init at 2.2.8
Diffstat (limited to 'pkgs/games/srb2')
-rw-r--r-- | pkgs/games/srb2/default.nix | 93 | ||||
-rw-r--r-- | pkgs/games/srb2/wadlocation.patch | 72 |
2 files changed, 165 insertions, 0 deletions
diff --git a/pkgs/games/srb2/default.nix b/pkgs/games/srb2/default.nix new file mode 100644 index 0000000000000..76800ba2ece83 --- /dev/null +++ b/pkgs/games/srb2/default.nix @@ -0,0 +1,93 @@ +{ lib +, stdenv +, fetchurl +, fetchFromGitHub +, substituteAll +, cmake +, curl +, nasm +, openmpt123 +, p7zip +, libgme +, libpng +, SDL2 +, SDL2_mixer +, zlib +}: + +let + +assets_version = "2.2.5"; + +assets = fetchurl { + url = "https://github.com/mazmazz/SRB2/releases/download/SRB2_assets_220/srb2-${assets_version}-assets.7z"; + sha256 = "1m9xf3vraq9nipsi09cyvvfa4i37gzfxg970rnqfswd86z9v6v00"; +}; + +assets_optional = fetchurl { + url = "https://github.com/mazmazz/SRB2/releases/download/SRB2_assets_220/srb2-${assets_version}-optional-assets.7z"; + sha256 = "1j29jrd0r1k2bb11wyyl6yv9b90s2i6jhrslnh77qkrhrwnwcdz4"; +}; + +in stdenv.mkDerivation rec { + pname = "srb2"; + version = "2.2.8"; + + src = fetchFromGitHub { + owner = "STJr"; + repo = "SRB2"; + rev = "SRB2_release_${version}"; + sha256 = "10prk617pbxkpiyybwwjzv425pkjczfqdb8pxwfyq91aa2rg0kl8"; + }; + + nativeBuildInputs = [ + cmake + nasm + p7zip + ]; + + buildInputs = [ + curl + libgme + libpng + openmpt123 + SDL2 + SDL2_mixer + zlib + ]; + + cmakeFlags = [ + "-DSRB2_ASSET_DIRECTORY=/build/source/assets" + "-DGME_INCLUDE_DIR=${libgme}/include" + "-DOPENMPT_INCLUDE_DIR=${openmpt123}/include" + "-DSDL2_MIXER_INCLUDE_DIR=${SDL2_mixer}/include/SDL2" + "-DSDL2_INCLUDE_DIR=${SDL2.dev}/include/SDL2" + ]; + + patches = [ + ./wadlocation.patch + ]; + + postPatch = '' + substituteInPlace src/sdl/i_system.c \ + --replace '@wadlocation@' $out + ''; + + preConfigure = '' + 7z x ${assets} -o"/build/source/assets" -aos + 7z x ${assets_optional} -o"/build/source/assets" -aos + ''; + + postInstall = '' + mkdir $out/bin + mv $out/lsdlsrb2-${version} $out/bin/srb2 + ''; + + meta = with lib; { + description = "Sonic Robo Blast 2 is a 3D Sonic the Hedgehog fangame based on a modified version of Doom Legacy"; + homepage = "https://www.srb2.org/"; + platforms = platforms.linux; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ zeratax ]; + }; +} diff --git a/pkgs/games/srb2/wadlocation.patch b/pkgs/games/srb2/wadlocation.patch new file mode 100644 index 0000000000000..ee3e1111e6f0b --- /dev/null +++ b/pkgs/games/srb2/wadlocation.patch @@ -0,0 +1,72 @@ +diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c +index 10c0747bf..861f00728 100644 +--- a/src/sdl/i_system.c ++++ b/src/sdl/i_system.c +@@ -145,13 +145,7 @@ int TimeFunction(int requested_frequency); + + // Locations for searching the srb2.pk3 + #if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON) +-#define DEFAULTWADLOCATION1 "/usr/local/share/games/SRB2" +-#define DEFAULTWADLOCATION2 "/usr/local/games/SRB2" +-#define DEFAULTWADLOCATION3 "/usr/share/games/SRB2" +-#define DEFAULTWADLOCATION4 "/usr/games/SRB2" +-#define DEFAULTSEARCHPATH1 "/usr/local/games" +-#define DEFAULTSEARCHPATH2 "/usr/games" +-#define DEFAULTSEARCHPATH3 "/usr/local" ++#define DEFAULTWADLOCATION1 "@wadlocation@" + #elif defined (_WIN32) + #define DEFAULTWADLOCATION1 "c:\\games\\srb2" + #define DEFAULTWADLOCATION2 "\\games\\srb2" +@@ -2812,34 +2806,6 @@ static const char *locateWad(void) + if (((envstr = I_GetEnv("SRB2WADDIR")) != NULL) && isWadPathOk(envstr)) + return envstr; + +-#ifndef NOCWD +- I_OutputMsg(",."); +- // examine current dir +- strcpy(returnWadPath, "."); +- if (isWadPathOk(returnWadPath)) +- return NULL; +-#endif +- +- +-#ifdef CMAKECONFIG +-#ifndef NDEBUG +- I_OutputMsg(","CMAKE_ASSETS_DIR); +- strcpy(returnWadPath, CMAKE_ASSETS_DIR); +- if (isWadPathOk(returnWadPath)) +- { +- return returnWadPath; +- } +-#endif +-#endif +- +-#ifdef __APPLE__ +- OSX_GetResourcesPath(returnWadPath); +- I_OutputMsg(",%s", returnWadPath); +- if (isWadPathOk(returnWadPath)) +- { +- return returnWadPath; +- } +-#endif + + // examine default dirs + #ifdef DEFAULTWADLOCATION1 +@@ -2884,16 +2850,7 @@ static const char *locateWad(void) + if (isWadPathOk(returnWadPath)) + return returnWadPath; + #endif +-#ifndef NOHOME +- // find in $HOME +- I_OutputMsg(",HOME"); +- if ((envstr = I_GetEnv("HOME")) != NULL) +- { +- WadPath = searchWad(envstr); +- if (WadPath) +- return WadPath; +- } +-#endif ++ + #ifdef DEFAULTSEARCHPATH1 + // find in /usr/local + I_OutputMsg(", in:"DEFAULTSEARCHPATH1); |