about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/doom-ports/gzdoom/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/doom-ports/gzdoom/default.nix')
-rw-r--r--nixpkgs/pkgs/games/doom-ports/gzdoom/default.nix102
1 files changed, 102 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/doom-ports/gzdoom/default.nix b/nixpkgs/pkgs/games/doom-ports/gzdoom/default.nix
new file mode 100644
index 000000000000..aaa800269a75
--- /dev/null
+++ b/nixpkgs/pkgs/games/doom-ports/gzdoom/default.nix
@@ -0,0 +1,102 @@
+{ 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
+}:
+
+stdenv.mkDerivation rec {
+  pname = "gzdoom";
+  version = "4.10.0";
+
+  src = fetchFromGitHub {
+    owner = "ZDoom";
+    repo = "gzdoom";
+    rev = "g${version}";
+    fetchSubmodules = true;
+    hash = "sha256-F3p2X/hjPV9fuaA7T2bQTP6SlKcfc8GniJgv8BcopGw=";
+  };
+
+  outputs = [ "out" "doc" ];
+
+  nativeBuildInputs = [
+    cmake
+    copyDesktopItems
+    makeWrapper
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    SDL2
+    bzip2
+    fluidsynth
+    game-music-emu
+    gtk3
+    libGL
+    libjpeg
+    libsndfile
+    libvpx
+    mpg123
+    openal
+    vulkan-loader
+    zlib
+    zmusic
+  ];
+
+  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}\")"
+  '';
+
+  cmakeFlags = [
+    "-DDYN_GTK=OFF"
+    "-DDYN_OPENAL=OFF"
+  ];
+
+  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
+  '';
+
+  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.
+    '';
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ azahi lassulus ];
+  };
+}