lol
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 cmake,
6 ninja,
7 SDL2,
8 zmusic,
9 libvpx,
10 pkg-config,
11 makeWrapper,
12 bzip2,
13 gtk3,
14 fluidsynth,
15 openal,
16 libGL,
17 vulkan-loader,
18}:
19
20stdenv.mkDerivation (finalAttrs: {
21 pname = "raze";
22 version = "1.11.0";
23
24 src = fetchFromGitHub {
25 owner = "ZDoom";
26 repo = "Raze";
27 tag = finalAttrs.version;
28 hash = "sha256-P8iwCkLch8054PwnGmgqTPWA8O2yyMruDeUDJGxDI2Q=";
29 leaveDotGit = true;
30 postFetch = ''
31 cd $out
32 git rev-parse HEAD > COMMIT
33 rm -rf .git
34 '';
35 };
36
37 nativeBuildInputs = [
38 cmake
39 ninja
40 pkg-config
41 makeWrapper
42 ];
43
44 buildInputs = [
45 SDL2
46 zmusic
47 libvpx
48 bzip2
49 gtk3
50 fluidsynth
51 openal
52 libGL
53 vulkan-loader
54 ];
55
56 cmakeFlags = [
57 (lib.cmakeBool "DYN_GTK" false)
58 (lib.cmakeBool "DYN_OPENAL" false)
59 ];
60
61 postPatch = ''
62 substituteInPlace tools/updaterevision/gitinfo.h.in \
63 --replace-fail "@Tag@" "${finalAttrs.version}" \
64 --replace-fail "@Hash@" "$(cat COMMIT)" \
65 --replace-fail "@Timestamp@" "1970-01-01 00:00:01 +0000"
66 '';
67
68 postInstall = ''
69 mv $out/bin/raze $out/share/raze
70 makeWrapper $out/share/raze/raze $out/bin/raze \
71 --set LD_LIBRARY_PATH ${lib.makeLibraryPath [ vulkan-loader ]}
72 install -Dm644 ../source/platform/posix/org.zdoom.Raze.256.png $out/share/pixmaps/org.zdoom.Raze.png
73 install -Dm644 ../source/platform/posix/org.zdoom.Raze.desktop $out/share/applications/org.zdoom.Raze.desktop
74 install -Dm644 ../soundfont/raze.sf2 $out/share/raze/soundfonts/raze.sf2
75 '';
76
77 meta = {
78 description = "Build engine port backed by GZDoom tech";
79 longDescription = ''
80 Raze is a fork of Build engine games backed by GZDoom tech and combines
81 Duke Nukem 3D, Blood, Redneck Rampage, Shadow Warrior and Exhumed/Powerslave
82 in a single package. It is also capable of playing Nam and WW2 GI.
83 '';
84 homepage = "https://github.com/ZDoom/Raze";
85 license = lib.licenses.gpl2Only;
86 maintainers = with lib.maintainers; [ qubitnano ];
87 mainProgram = "raze";
88 platforms = [ "x86_64-linux" ];
89 };
90})