Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / games / doom-ports / gzdoom / default.nix
blob768a4936d821f1c132e416fa318931af95b39eaf
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , makeWrapper
5 , makeDesktopItem
6 , copyDesktopItems
7 , SDL2
8 , bzip2
9 , cmake
10 , fluidsynth
11 , game-music-emu
12 , gtk3
13 , imagemagick
14 , libGL
15 , libjpeg
16 , libsndfile
17 , libvpx
18 , libwebp
19 , mpg123
20 , ninja
21 , openal
22 , pkg-config
23 , vulkan-loader
24 , zlib
25 , zmusic
28 stdenv.mkDerivation rec {
29   pname = "gzdoom";
30   version = "4.11.3";
32   src = fetchFromGitHub {
33     owner = "ZDoom";
34     repo = "gzdoom";
35     rev = "g${version}";
36     fetchSubmodules = true;
37     hash = "sha256-pY+5R3W/9pJGiBoDFkxxpuP0I2ZLb+Q/s5UYU20G748=";
38   };
40   outputs = [ "out" "doc" ];
42   nativeBuildInputs = [
43     cmake
44     copyDesktopItems
45     imagemagick
46     makeWrapper
47     ninja
48     pkg-config
49   ];
51   buildInputs = [
52     SDL2
53     bzip2
54     fluidsynth
55     game-music-emu
56     gtk3
57     libGL
58     libjpeg
59     libsndfile
60     libvpx
61     libwebp
62     mpg123
63     openal
64     vulkan-loader
65     zlib
66     zmusic
67   ];
69   postPatch = ''
70     substituteInPlace tools/updaterevision/UpdateRevision.cmake \
71       --replace "ret_var(Tag)" "ret_var(\"${src.rev}\")" \
72       --replace "ret_var(Timestamp)" "ret_var(\"1970-00-00 00:00:00 +0000\")" \
73       --replace "ret_var(Hash)" "ret_var(\"${src.rev}\")"
74   '';
76   cmakeFlags = [
77     "-DDYN_GTK=OFF"
78     "-DDYN_OPENAL=OFF"
79   ];
81   desktopItems = [
82     (makeDesktopItem {
83       name = "gzdoom";
84       exec = "gzdoom";
85       desktopName = "GZDoom";
86       comment = meta.description;
87       icon = "gzdoom";
88       categories = [ "Game" ];
89     })
90   ];
92   postInstall = ''
93     mv $out/bin/gzdoom $out/share/games/doom/gzdoom
94     makeWrapper $out/share/games/doom/gzdoom $out/bin/gzdoom
96     for size in 16 24 32 48 64 128; do
97       mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
98       convert -background none -resize "$size"x"$size" $src/src/win32/icon1.ico -flatten \
99         $out/share/icons/hicolor/"$size"x"$size"/apps/gzdoom.png
100     done;
101   '';
103   meta = with lib; {
104     homepage = "https://github.com/ZDoom/gzdoom";
105     description = "Modder-friendly OpenGL and Vulkan source port based on the DOOM engine";
106     longDescription = ''
107       GZDoom is a feature centric port for all DOOM engine games, based on
108       ZDoom, adding an OpenGL renderer and powerful scripting capabilities.
109     '';
110     license = licenses.gpl3Plus;
111     platforms = platforms.linux;
112     maintainers = with maintainers; [ azahi lassulus ];
113   };