devilutionx: modernize

This commit is contained in:
Marcin Serwin
2025-04-26 03:00:20 +02:00
parent bc3ec03a24
commit 5e3f31204c
3 changed files with 30 additions and 65 deletions
@@ -0,0 +1,12 @@
diff --git a/Source/init.cpp b/Source/init.cpp
index 4e6fab1..ecd4ff9 100644
--- a/Source/init.cpp
+++ b/Source/init.cpp
@@ -144,6 +144,7 @@ std::vector<std::string> GetMPQSearchPaths()
paths.emplace_back("/usr/local/share/diasurgical/devilutionx/");
paths.emplace_back("/usr/share/diasurgical/devilutionx/");
}
+ paths.emplace_back("@assets@");
#elif defined(NXDK)
paths.emplace_back("D:\\");
#elif (defined(_WIN64) || defined(_WIN32)) && !defined(__UWP__) && !defined(NXDK)
+17 -59
View File
@@ -8,10 +8,10 @@
pkg-config,
gettext,
libsodium,
SDL2_classic,
SDL2,
SDL2_image,
SDL_audiolib,
flac,
simpleini,
fmt,
libpng,
libtiff,
@@ -48,37 +48,21 @@ let
rev = "d6c6a069a5041a3e89594c447ced3f15d77618b8";
sha256 = "sha256-ttRJLfaGHzhS4jd8db7BNPWROCti3ZxuRouqsL/M5ew=";
};
# breaks without this version
SDL_audiolib' = SDL_audiolib.overrideAttrs (oldAttrs: {
src = fetchFromGitHub {
owner = "realnc";
repo = "SDL_audiolib";
rev = "cc1bb6af8d4cf5e200259072bde1edd1c8c5137e";
sha256 = "sha256-xP7qlwwOkqVeTlCEZLinnvmx8LbU2co5+t//cf4n190=";
};
buildInputs = oldAttrs.buildInputs ++ [ flac ];
});
# missing pkg-config and/or cmake file
simpleini = fetchurl {
url = "https://github.com/brofield/simpleini/archive/56499b5af5d2195c6acfc58c4630b70e0c9c4c21.tar.gz";
sha256 = "sha256-29tQoz0+33kfwmIjCdnD1wGi+35+K0A9P6UE4E8K3g4=";
};
in
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "devilutionx";
version = "1.5.4";
src = fetchFromGitHub {
owner = "diasurgical";
repo = "devilutionX";
rev = version;
sha256 = "sha256-F23MTe7vMOgIBH6qm7X1+8gIMmN9E+d/GZnFsQZt2cM=";
tag = finalAttrs.version;
hash = "sha256-F23MTe7vMOgIBH6qm7X1+8gIMmN9E+d/GZnFsQZt2cM=";
};
patches = [ ./add-nix-share-path-to-mpq-search.patch ];
postPatch = ''
substituteInPlace 3rdParty/asio/CMakeLists.txt --replace-fail "${asio.url}" "${asio}"
substituteInPlace 3rdParty/libmpq/CMakeLists.txt --replace-fail "${libmpq.url}" "${libmpq}"
@@ -86,7 +70,8 @@ stdenv.mkDerivation rec {
substituteInPlace 3rdParty/libzt/CMakeLists.txt \
--replace-fail "GIT_REPOSITORY https://github.com/diasurgical/libzt.git" "" \
--replace-fail "GIT_TAG ${libzt.rev}" "SOURCE_DIR ${libzt}"
substituteInPlace 3rdParty/simpleini/CMakeLists.txt --replace-fail "${simpleini.url}" "${simpleini}"
substituteInPlace Source/init.cpp \
--replace-fail "@assets@" "$out/share/diasurgical/devilutionx/"
'';
nativeBuildInputs = [
@@ -103,49 +88,22 @@ stdenv.mkDerivation rec {
libtiff
libwebp
libsodium
SDL2_classic
SDL2
SDL2_image
SDL_audiolib'
SDL_audiolib
simpleini
];
installPhase =
''
runHook preInstall
''
+ (
if stdenv.hostPlatform.isDarwin then
''
mkdir -p $out/Applications
mv devilutionx.app $out/Applications
''
else
''
install -Dm755 -t $out/bin devilutionx
install -Dm755 -t $out/bin devilutionx.mpq
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/devilutionx.png
install -Dm755 ../Packaging/resources/hellfire.png $out/share/icons/hicolor/512x512/apps/devilutionx-hellfire.png
install -Dm755 ../Packaging/resources/icon_32.png $out/share/icons/hicolor/32x32/apps/devilutionx.png
install -Dm755 ../Packaging/resources/hellfire_32.png $out/share/icons/hicolor/32x32/apps/devilutionx-hellfire.png
''
)
+ ''
runHook postInstall
'';
meta = with lib; {
meta = {
homepage = "https://github.com/diasurgical/devilutionX";
description = "Diablo build for modern operating systems";
mainProgram = "devilutionx";
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.sustainableUse;
maintainers = with maintainers; [
license = lib.licenses.sustainableUse;
maintainers = with lib.maintainers; [
karolchmist
aanderse
];
platforms = platforms.linux ++ platforms.windows;
platforms = with lib.platforms; linux ++ windows;
};
}
})
+1 -6
View File
@@ -17020,12 +17020,7 @@ with pkgs;
ddnet-server = ddnet.override { buildClient = false; };
devilutionx = callPackage ../games/devilutionx {
fmt = fmt_9;
SDL2_classic = SDL2_classic.override {
withStatic = true;
};
};
devilutionx = callPackage ../games/devilutionx { };
duckmarines = callPackage ../games/duckmarines { love = love_0_10; };