summary refs log tree commit diff
diff options
context:
space:
mode:
authorAaron Andersen <aaron@fosslib.net>2021-11-03 22:05:53 -0400
committerAaron Andersen <aaron@fosslib.net>2021-11-07 07:49:59 -0500
commit565d63295200f44948f384e0523336c511b60fb6 (patch)
treef62a6fe5e8a7d44319ff7f862afd59c33fc3b50d
parent573849ce89f5fc5b18a8979d4496f09ac031880c (diff)
downloadnixpkgs-565d63295200f44948f384e0523336c511b60fb6.tar
nixpkgs-565d63295200f44948f384e0523336c511b60fb6.tar.gz
nixpkgs-565d63295200f44948f384e0523336c511b60fb6.tar.bz2
nixpkgs-565d63295200f44948f384e0523336c511b60fb6.tar.lz
nixpkgs-565d63295200f44948f384e0523336c511b60fb6.tar.xz
nixpkgs-565d63295200f44948f384e0523336c511b60fb6.tar.zst
nixpkgs-565d63295200f44948f384e0523336c511b60fb6.zip
devilutionx: 1.2.1 -> 1.3.0
-rw-r--r--pkgs/games/devilutionx/default.nix76
1 files changed, 61 insertions, 15 deletions
diff --git a/pkgs/games/devilutionx/default.nix b/pkgs/games/devilutionx/default.nix
index fa457b1f1bc..c1ba16bea1d 100644
--- a/pkgs/games/devilutionx/default.nix
+++ b/pkgs/games/devilutionx/default.nix
@@ -1,32 +1,78 @@
-{ lib, stdenv, fetchFromGitHub, cmake, SDL2, SDL2_mixer, SDL2_ttf, libsodium, pkg-config }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchurl
+, fetchzip
+, cmake
+, gettext
+, SDL2
+, fmt
+, libpng
+, smpq
+}:
+
+let
+  # TODO: submit a PR upstream to allow system copies of these libraries
+  asio = fetchurl {
+    url = "https://github.com/diasurgical/asio/archive/ebeff99f539da23d27c2e8d4bdbc1ee011968644.tar.gz";
+    sha256 = "0vhb4cig40mm0a98i74grpmfkcmby8zxg6vqa38dpryxpgvp5fw8";
+  };
+
+  SDL_audiolib = fetchurl {
+    url = "https://github.com/realnc/SDL_audiolib/archive/aa79660eba4467a44f9dcaecf26b0f0a000abfd7.tar.gz";
+    sha256 = "0z4rizncp6gqsy72b3709zc9fr915wgcwnlx1fhhy7mrczsly630";
+  };
+
+  SDL_image = fetchurl {
+    url = "https://github.com/libsdl-org/SDL_image/archive/refs/tags/release-2.0.5.tar.gz";
+    sha256 = "1zw3k40kbmwc2w9l8fkzrk8maidapmciw3lgcml86pqs9izzddvn";
+  };
+
+  simpleini = fetchzip {
+    url = "https://github.com/brofield/simpleini/archive/7bca74f6535a37846162383e52071f380c99a43a.zip";
+    sha256 = "07kf1jjbc9v04hsysa6v2wh1m9csf5qz0b1wmlkf9sj00kf47zj7";
+  };
+in
 
 stdenv.mkDerivation rec {
   pname = "devilutionx";
-  version = "1.2.1";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "diasurgical";
     repo = "devilutionX";
     rev = version;
-    sha256 = "sha256-PgYlNO1p78d0uiL474bDJOL++SxJfeBLK65czdaylHU=";
+    sha256 = "0acrkqi0pr3cbr5i1a1vfrnxv1n3xmql5d86bm2gywvpdb94xads";
   };
 
   postPatch = ''
     substituteInPlace Source/init.cpp --replace "/usr/share/diasurgical/devilutionx/" "${placeholder "out"}/share/diasurgical/devilutionx/"
-  '';
 
-  NIX_CFLAGS_COMPILE = [
-    "-I${SDL2_ttf}/include/SDL2"
-    ''-DTTF_FONT_PATH="${placeholder "out"}/share/fonts/truetype/CharisSILB.ttf"''
-  ];
+    # download dependencies ahead of time
+    substituteInPlace 3rdParty/asio/CMakeLists.txt --replace "https://github.com/diasurgical/asio/archive/ebeff99f539da23d27c2e8d4bdbc1ee011968644.tar.gz" "${asio}"
+    substituteInPlace 3rdParty/SDL_audiolib/CMakeLists.txt --replace "https://github.com/realnc/SDL_audiolib/archive/aa79660eba4467a44f9dcaecf26b0f0a000abfd7.tar.gz" "${SDL_audiolib}"
+    substituteInPlace 3rdParty/SDL_image/CMakeLists.txt --replace "https://github.com/libsdl-org/SDL_image/archive/refs/tags/release-2.0.5.tar.gz" "${SDL_image}"
+    substituteInPlace 3rdParty/simpleini/CMakeLists.txt --replace "https://github.com/brofield/simpleini/archive/7bca74f6535a37846162383e52071f380c99a43a.zip" "${simpleini}"
+  '';
 
   cmakeFlags = [
     "-DBINARY_RELEASE=ON"
     "-DVERSION_NUM=${version}"
+    "-DPACKET_ENCRYPTION=OFF" # FIXME: build with libsodium
+    "-DDISABLE_ZERO_TIER=ON" # FIXME: build with libzt
   ];
 
-  nativeBuildInputs = [ pkg-config cmake ];
-  buildInputs = [ libsodium SDL2 SDL2_mixer SDL2_ttf ];
+  nativeBuildInputs = [
+    cmake
+    gettext
+    smpq # used to build devilutionx.mpq
+  ];
+
+  buildInputs = [
+    fmt
+    libpng
+    (SDL2.override { withStatic = true; })
+  ];
 
   installPhase = ''
     runHook preInstall
@@ -36,10 +82,10 @@ stdenv.mkDerivation rec {
     mv devilutionx.app $out/Applications
   '' else ''
     install -Dm755 -t $out/bin devilutionx
-    install -Dt $out/share/fonts/truetype ../Packaging/resources/CharisSILB.ttf
-    install -Dt $out/share/diasurgical/devilutionx ../Packaging/resources/devilutionx.mpq
-
-    # TODO: icons and .desktop (see Packages/{debian,fedora}/*)
+    install -Dm755 -t $out/share/diasurgical/devilutionx devilutionx.mpq
+    install -Dm755 -t $out/share/applications ../Packaging/nix/devilutionx-hellfire.desktop ../Packaging/nix/devilutionx.desktop
+    install -Dm755 ../Packaging/resources/icon.png $out/share/icons/hicolor/512x512/apps/devilution.png
+    install -Dm755 ../Packaging/resources/hellfire.png $out/share/icons/hicolor/512x512/apps/devilution-hellfire.png
   '') + ''
 
     runHook postInstall
@@ -50,7 +96,7 @@ stdenv.mkDerivation rec {
     description = "Diablo build for modern operating systems";
     longDescription = "In order to play this game a copy of diabdat.mpq is required. Place a copy of diabdat.mpq in ~/.local/share/diasurgical/devilution before executing the game.";
     license = licenses.unlicense;
-    maintainers = [ maintainers.karolchmist ];
+    maintainers = with maintainers; [ karolchmist aanderse ];
     platforms = platforms.linux ++ platforms.windows;
   };
 }