diff --git a/pkgs/games/gzdoom/default.nix b/pkgs/games/gzdoom/default.nix index 3eb69fa3c112..aaa800269a75 100644 --- a/pkgs/games/gzdoom/default.nix +++ b/pkgs/games/gzdoom/default.nix @@ -1,107 +1,102 @@ -{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, makeWrapper, openal, fluidsynth -, soundfont-fluid, libGL, SDL2, bzip2, zlib, libjpeg, libsndfile, libvpx, mpg123 -, game-music-emu, pkg-config, copyDesktopItems, makeDesktopItem, gtk3 }: +{ lib +, stdenv +, fetchFromGitHub +, makeWrapper +, makeDesktopItem +, copyDesktopItems +, SDL2 +, bzip2 +, cmake +, fluidsynth +, game-music-emu +, gtk3 +, libGL +, libjpeg +, libsndfile +, libvpx +, mpg123 +, ninja +, openal +, pkg-config +, vulkan-loader +, zlib +, zmusic +}: -let - zmusic = stdenv.mkDerivation rec { - pname = "zmusic"; - version = "1.1.3"; +stdenv.mkDerivation rec { + pname = "gzdoom"; + version = "4.10.0"; - src = fetchFromGitHub { - owner = "ZDoom"; - repo = "ZMusic"; - rev = version; - hash = "sha256-wrNWfTIbNU/S2qFObUSkb6qyaceh+Y7Loxqudl86+W4="; - }; - - nativeBuildInputs = [ cmake pkg-config ]; - - buildInputs = [ fluidsynth ]; - - cmakeFlags = [ "-DDYN_FLUIDSYNTH=OFF" ]; - - preConfigure = '' - sed -i \ - -e "s@/usr/share/sounds/sf2/@${soundfont-fluid}/share/soundfonts/@g" \ - -e "s@FluidR3_GM.sf2@FluidR3_GM2-2.sf2@g" \ - source/mididevices/music_fluidsynth_mididevice.cpp - ''; + src = fetchFromGitHub { + owner = "ZDoom"; + repo = "gzdoom"; + rev = "g${version}"; + fetchSubmodules = true; + hash = "sha256-F3p2X/hjPV9fuaA7T2bQTP6SlKcfc8GniJgv8BcopGw="; }; - gzdoom = stdenv.mkDerivation rec { - pname = "gzdoom"; - version = "4.8.2"; + outputs = [ "out" "doc" ]; - src = fetchFromGitHub { - owner = "ZDoom"; - repo = "gzdoom"; - rev = "g${version}"; - hash = "sha256-aT7DUZih3EDqncaXYIPIyGsz4fI267N29PmN3qyVjyo="; - fetchSubmodules = true; - }; + nativeBuildInputs = [ + cmake + copyDesktopItems + makeWrapper + ninja + pkg-config + ]; - nativeBuildInputs = [ cmake makeWrapper pkg-config copyDesktopItems ]; - buildInputs = [ - SDL2 - bzip2 - fluidsynth - game-music-emu - gtk3 - libGL - libjpeg - libsndfile - libvpx - mpg123 - openal - zlib - zmusic - ]; + buildInputs = [ + SDL2 + bzip2 + fluidsynth + game-music-emu + gtk3 + libGL + libjpeg + libsndfile + libvpx + mpg123 + openal + vulkan-loader + zlib + zmusic + ]; - patches = [ - (fetchpatch { # TODO: Delete me when upgrading to 4.9 - url = "https://github.com/ZDoom/gzdoom/commit/aae85a1b9169953d8dcc5f138a477d5c7d75addb.patch"; - sha256 = "upuLDgVMaGaFSVaDV9Hj13DR5LUma51xv+Mfsz9m9a0="; - }) - ]; + postPatch = '' + substituteInPlace tools/updaterevision/UpdateRevision.cmake \ + --replace "ret_var(Tag)" "ret_var(\"${src.rev}\")" \ + --replace "ret_var(Timestamp)" "ret_var(\"1970-00-00 00:00:00 +0000\")" \ + --replace "ret_var(Hash)" "ret_var(\"${src.rev}\")" + ''; - NIX_CFLAGS_LINK = "-lopenal -lfluidsynth"; + cmakeFlags = [ + "-DDYN_GTK=OFF" + "-DDYN_OPENAL=OFF" + ]; - cmakeFlags = [ "-DDYN_GTK=OFF" ]; + desktopItems = [ + (makeDesktopItem { + name = "gzdoom"; + exec = "gzdoom"; + desktopName = "GZDoom"; + categories = [ "Game" ]; + }) + ]; - desktopItems = [ - (makeDesktopItem { - name = "gzdoom"; - exec = "gzdoom"; - desktopName = "GZDoom"; - categories = [ "Game" ]; - }) - ]; + postInstall = '' + mv $out/bin/gzdoom $out/share/games/doom/gzdoom + makeWrapper $out/share/games/doom/gzdoom $out/bin/gzdoom + ''; - installPhase = '' - runHook preInstall - - install -Dm755 gzdoom "$out/lib/gzdoom/gzdoom" - for i in *.pk3; do - install -Dm644 "$i" "$out/lib/gzdoom/$i" - done - for i in fm_banks/*; do - install -Dm644 "$i" "$out/lib/gzdoom/$i" - done - for i in soundfonts/*; do - install -Dm644 "$i" "$out/lib/gzdoom/$i" - done - mkdir $out/bin - makeWrapper $out/lib/gzdoom/gzdoom $out/bin/gzdoom - - runHook postInstall + meta = with lib; { + homepage = "https://github.com/ZDoom/gzdoom"; + description = "Modder-friendly OpenGL and Vulkan source port based on the DOOM engine"; + longDescription = '' + GZDoom is a feature centric port for all DOOM engine games, based on + ZDoom, adding an OpenGL renderer and powerful scripting capabilities. ''; - - meta = with lib; { - homepage = "https://github.com/ZDoom/gzdoom"; - description = "A Doom source port based on ZDoom. It features an OpenGL renderer and lots of new features"; - license = licenses.gpl3Plus; - platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ azahi lassulus ]; - }; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ azahi lassulus ]; }; -in gzdoom +}