2025-07-24 13:55:40 +02:00

120 lines
3.1 KiB
Nix
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
stdenv,
lib,
fetchFromBitbucket,
cmake,
pkg-config,
makeWrapper,
zlib,
bzip2,
libjpeg,
SDL2,
SDL2_net,
SDL2_mixer,
gtk3,
writers,
python3Packages,
nix-update,
fetchpatch,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "ecwolf";
version = "1.4.1";
src = fetchFromBitbucket {
owner = "ecwolf";
repo = "ecwolf";
rev = "refs/tags/${finalAttrs.version}";
hash = "sha256-V2pSP8i20zB50WtUMujzij+ISSupdQQ/oCYYrOaTU1g=";
};
patches = [
# Fixes build with gcc >= 14. Shouldn't be needed for ecwolf versions > 1.4.1.
(fetchpatch {
name = "tmemory.h-const-correctness.patch";
url = "https://bitbucket.org/ecwolf/ecwolf/commits/400aaf96a36a14ab8eab18a670ba6439046f3bb0/raw";
hash = "sha256-2YwHEctBPyprs0DVsazimGEgmiCba24zh2dFfw9tOnU=";
})
];
nativeBuildInputs = [
cmake
pkg-config
]
++ lib.optionals stdenv.hostPlatform.isDarwin [ makeWrapper ];
buildInputs = [
zlib
bzip2
libjpeg
SDL2
SDL2_net
SDL2_mixer
gtk3
];
NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-framework AppKit";
# ECWolf installs its binary to the games/ directory, but Nix only adds bin/
# directories to the PATH.
postInstall =
lib.optionalString stdenv.hostPlatform.isLinux ''
mv "$out/games" "$out/bin"
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/{Applications,bin}
cp -R ecwolf.app $out/Applications
makeWrapper $out/{Applications/ecwolf.app/Contents/MacOS,bin}/ecwolf
'';
passthru.updateScript =
let
updateScriptPkg =
writers.writePython3 "ecwolf_update_script"
{
libraries = with python3Packages; [
debian-inspector
requests
];
}
''
from os import execl
from sys import argv
from debian_inspector.debcon import get_paragraphs_data
from requests import get
# The debian.drdteam.org repo is a primary source of information. Its
# run by Blzut3, the creator and primary developer of ECWolf. Its also
# listed on ECWolfs download page:
# <https://maniacsvault.net/ecwolf/download.php>.
url = 'https://debian.drdteam.org/dists/stable/multiverse/binary-amd64/Packages' # noqa: E501
response = get(url)
packages = get_paragraphs_data(response.text)
for package in packages:
if package['package'] == 'ecwolf':
latest_version = package['version']
break
nix_update_path = argv[1]
execl(nix_update_path, nix_update_path, '--version', latest_version)
'';
in
[
updateScriptPkg
(lib.getExe nix-update)
];
meta = with lib; {
description = "Enhanched SDL-based port of Wolfenstein 3D for various platforms";
mainProgram = "ecwolf";
homepage = "https://maniacsvault.net/ecwolf/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [
jayman2000
sander
];
platforms = platforms.all;
};
})