about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDonovan Glover <donovan@dglover.co>2024-03-16 05:36:10 -0400
committerDonovan Glover <donovan@dglover.co>2024-03-16 06:08:57 -0400
commit731e9507090c139e2a77ea86d538708f6a25184d (patch)
tree2432ee29c13d46389dd9c1f32a4939ed7c13eb27
parent8175377a57ff5965ebfc98e23d30191edc50ce52 (diff)
downloadnixlib-731e9507090c139e2a77ea86d538708f6a25184d.tar
nixlib-731e9507090c139e2a77ea86d538708f6a25184d.tar.gz
nixlib-731e9507090c139e2a77ea86d538708f6a25184d.tar.bz2
nixlib-731e9507090c139e2a77ea86d538708f6a25184d.tar.lz
nixlib-731e9507090c139e2a77ea86d538708f6a25184d.tar.xz
nixlib-731e9507090c139e2a77ea86d538708f6a25184d.tar.zst
nixlib-731e9507090c139e2a77ea86d538708f6a25184d.zip
srb2kart: refactor
- Removed unused binding
- Dropped wadlocation.patch
- fetchurl -> fetchzip
- mkdir/cp -> install
-rw-r--r--pkgs/by-name/sr/srb2kart/package.nix70
-rw-r--r--pkgs/by-name/sr/srb2kart/wadlocation.patch61
2 files changed, 36 insertions, 95 deletions
diff --git a/pkgs/by-name/sr/srb2kart/package.nix b/pkgs/by-name/sr/srb2kart/package.nix
index a9602f712cc3..7021298b41ad 100644
--- a/pkgs/by-name/sr/srb2kart/package.nix
+++ b/pkgs/by-name/sr/srb2kart/package.nix
@@ -1,43 +1,53 @@
 { lib
 , stdenv
-, fetchurl
+, fetchzip
 , fetchFromGitHub
-, substituteAll
 , cmake
 , curl
 , nasm
-, unzip
 , game-music-emu
 , libpng
 , SDL2
 , SDL2_mixer
 , zlib
+, makeWrapper
 }:
 
-let
-
-  release_tag = "v1.6";
-
-  assets = fetchurl {
-    url = "https://github.com/STJr/Kart-Public/releases/download/${release_tag}/AssetsLinuxOnly.zip";
-    hash = "sha256-ejhPuZ1C8M9B0S4+2HN1T5pbormT1eVL3nlivqOszdE=";
-  };
-
-in stdenv.mkDerivation {
+stdenv.mkDerivation (finalAttrs: {
   pname = "srb2kart";
-  version = "1.6.0";
+  version = "1.6";
 
   src = fetchFromGitHub {
     owner = "STJr";
     repo = "Kart-Public";
-    rev = release_tag;
+    rev = "v${finalAttrs.version}";
     hash = "sha256-5sIHdeenWZjczyYM2q+F8Y1SyLqL+y77yxYDUM3dVA0=";
   };
 
+  assets = stdenv.mkDerivation {
+    pname = "srb2kart-data";
+    version = finalAttrs.version;
+
+    src = fetchzip {
+      url = "https://github.com/STJr/Kart-Public/releases/download/v${finalAttrs.version}/AssetsLinuxOnly.zip";
+      hash = "sha256-yaVdsQUnyobjSbmemeBEyu35GeZCX1ylTRcjcbDuIu4=";
+      stripRoot = false;
+    };
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/share/srb2kart
+      cp -r * $out/share/srb2kart
+
+      runHook postInstall
+    '';
+  };
+
   nativeBuildInputs = [
     cmake
     nasm
-    unzip
+    makeWrapper
   ];
 
   buildInputs = [
@@ -50,31 +60,23 @@ in stdenv.mkDerivation {
   ];
 
   cmakeFlags = [
+    "-DSRB2_ASSET_DIRECTORY=${finalAttrs.assets}/share/srb2kart"
     "-DGME_INCLUDE_DIR=${game-music-emu}/include"
     "-DSDL2_MIXER_INCLUDE_DIR=${lib.getDev SDL2_mixer}/include/SDL2"
     "-DSDL2_INCLUDE_DIR=${lib.getDev SDL2}/include/SDL2"
   ];
 
-  patches = [
-    ./wadlocation.patch
-  ];
+  installPhase = ''
+    runHook preInstall
 
-  postPatch = ''
-    substituteInPlace src/sdl/i_system.c \
-        --replace '@wadlocation@' $out
-  '';
+    install -Dm644 ../srb2.png $out/share/pixmaps/srb2kart.png
+    install -Dm644 ../srb2.png $out/share/icons/srb2kart.png
+    install -Dm755 bin/srb2kart $out/bin/srb2kart
 
-  preConfigure = ''
-    mkdir assets/installer
-    pushd assets/installer
-    unzip ${assets} "*.kart" srb2.srb
-    popd
-  '';
+    wrapProgram $out/bin/srb2kart \
+      --set SRB2WADDIR "${finalAttrs.assets}/share/srb2kart"
 
-  postInstall = ''
-    mkdir -p $out/bin $out/share/games/SRB2Kart
-    mv $out/srb2kart* $out/bin/
-    mv $out/*.kart $out/share/games/SRB2Kart
+    runHook postInstall
   '';
 
   meta = with lib; {
@@ -85,4 +87,4 @@ in stdenv.mkDerivation {
     maintainers = with maintainers; [ viric donovanglover ];
     mainProgram = "srb2kart";
   };
-}
+})
diff --git a/pkgs/by-name/sr/srb2kart/wadlocation.patch b/pkgs/by-name/sr/srb2kart/wadlocation.patch
deleted file mode 100644
index 1923cda041d2..000000000000
--- a/pkgs/by-name/sr/srb2kart/wadlocation.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
-index 51f708d0..c4d971f7 100644
---- a/src/sdl/i_system.c
-+++ b/src/sdl/i_system.c
-@@ -139,7 +139,7 @@ typedef LPVOID (WINAPI *p_MapViewOfFile) (HANDLE, DWORD, DWORD, DWORD, SIZE_T);
- 
- // Locations for searching the srb2.srb
- #if defined (__unix__) || defined(__APPLE__) || defined (UNIXCOMMON)
--#define DEFAULTWADLOCATION1 "/usr/local/share/games/SRB2Kart"
-+#define DEFAULTWADLOCATION1 "@wadlocation@"
- #define DEFAULTWADLOCATION2 "/usr/local/games/SRB2Kart"
- #define DEFAULTWADLOCATION3 "/usr/share/games/SRB2Kart"
- #define DEFAULTWADLOCATION4 "/usr/games/SRB2Kart"
-@@ -3646,47 +3646,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 DEFAULTDIR
--	I_OutputMsg(",HOME/" DEFAULTDIR);
--	// examine user jart directory
--	if ((envstr = I_GetEnv("HOME")) != NULL)
--	{
--		sprintf(returnWadPath, "%s" PATHSEP DEFAULTDIR, envstr);
--		if (isWadPathOk(returnWadPath))
--			return returnWadPath;
--	}
--#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
- 	I_OutputMsg(","DEFAULTWADLOCATION1);