Files

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

120 lines
3.1 KiB
Nix
Raw Permalink Normal View History

2025-10-09 14:15:47 +02:00
{
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;
};
})