ttaenc: init at 3.4.1 (#238757)
[NixPkgs.git] / pkgs / games / quakespasm / vulkan.nix
blob137bf667f2f4e52b675a565894e72bc232363995
2   SDL2,
3   fetchFromGitHub,
4   flac,
5   glslang,
6   gzip,
7   lib,
8   libmpg123,
9   libopus,
10   libvorbis,
11   makeWrapper,
12   meson,
13   moltenvk,
14   ninja,
15   opusfile,
16   pkg-config,
17   stdenv,
18   vulkan-headers,
19   vulkan-loader,
22 stdenv.mkDerivation rec {
23   pname = "vkquake";
24   version = "1.31.3";
26   src = fetchFromGitHub {
27     owner = "Novum";
28     repo = "vkQuake";
29     rev = version;
30     sha256 = "sha256-VqTfcwt6/VTotD2Y7x7WiVwISRGOLfmMWh6EO5DSMX4=";
31   };
33   nativeBuildInputs = [
34     makeWrapper
35     glslang
36     meson
37     ninja
38     pkg-config
39   ];
41   buildInputs =
42     [
43       SDL2
44       flac
45       gzip
46       libmpg123
47       libopus
48       libvorbis
49       opusfile
50       vulkan-loader
51     ]
52     ++ lib.optionals stdenv.hostPlatform.isDarwin [
53       moltenvk
54       vulkan-headers
55     ];
57   buildFlags = [ "DO_USERDIRS=1" ];
59   env = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
60     NIX_CFLAGS_COMPILE = lib.concatStringsSep " " [
61       "-Wno-error=unused-but-set-variable"
62       "-Wno-error=implicit-const-int-float-conversion"
63     ];
64   };
66   installPhase = ''
67     mkdir -p "$out/bin"
68     cp vkquake "$out/bin"
69   '';
71   postFixup = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
72     patchelf $out/bin/vkquake \
73       --add-rpath ${lib.makeLibraryPath [ vulkan-loader ]}
74   '';
76   meta = with lib; {
77     description = "Vulkan Quake port based on QuakeSpasm";
78     homepage = src.meta.homepage;
79     longDescription = ''
80       vkQuake is a Quake 1 port using Vulkan instead of OpenGL for rendering.
81       It is based on the popular QuakeSpasm port and runs all mods compatible with it
82       like Arcane Dimensions or In The Shadows. vkQuake also serves as a Vulkan demo
83       application that shows basic usage of the API. For example it demonstrates render
84       passes & sub passes, pipeline barriers & synchronization, compute shaders, push &
85       specialization constants, CPU/GPU parallelism and memory pooling.
86     '';
88     platforms = with platforms; linux ++ darwin;
89     maintainers = with maintainers; [
90       PopeRigby
91       ylh
92     ];
93     mainProgram = "vkquake";
94   };