perlPackages.NetAsyncWebSocket: 0.13 -> 0.14 (#352432)
[NixPkgs.git] / pkgs / games / hedgewars / default.nix
blobf98183d8239d009366bbfce2556142fa65145f45
2   stdenv,
3   SDL2_image_2_6,
4   SDL2_ttf,
5   SDL2_net,
6   fpc,
7   haskell,
8   ffmpeg,
9   libglut,
10   lib,
11   fetchurl,
12   cmake,
13   pkg-config,
14   lua5_1,
15   SDL2,
16   SDL2_mixer,
17   zlib,
18   libpng,
19   libGL,
20   libGLU,
21   physfs,
22   qtbase,
23   qttools,
24   wrapQtAppsHook,
25   llvm,
26   withServer ? true,
29 let
30   ghc = haskell.packages.ghc94.ghcWithPackages (
31     pkgs: with pkgs; [
32       SHA
33       bytestring
34       entropy
35       hslogger
36       network
37       pkgs.zlib
38       random
39       regex-tdfa
40       sandi
41       utf8-string
42       vector
43     ]
44   );
46 stdenv.mkDerivation rec {
47   pname = "hedgewars";
48   version = "1.0.2";
50   src = fetchurl {
51     url = "https://www.hedgewars.org/download/releases/hedgewars-src-${version}.tar.bz2";
52     sha256 = "sha256-IB/l5FvYyls9gbGOwGvWu8n6fCxjvwGQBeL4C+W88hI=";
53   };
55   patches = [
56     # Add support for ffmpeg 6.0
57     # https://github.com/hedgewars/hw/pull/74
58     ./support-ffmpeg-6.patch
59   ];
61   nativeBuildInputs = [
62     cmake
63     pkg-config
64     qttools
65     wrapQtAppsHook
66   ];
68   buildInputs = [
69     SDL2_ttf
70     SDL2_net
71     SDL2
72     SDL2_mixer
73     SDL2_image_2_6
74     fpc
75     lua5_1
76     llvm # hard-requirement on aarch64, for some reason not strictly necessary on x86-64
77     ffmpeg
78     libglut
79     physfs
80     qtbase
81   ] ++ lib.optional withServer ghc;
83   cmakeFlags = [
84     "-DNOVERSIONINFOUPDATE=ON"
85     "-DNOSERVER=${if withServer then "OFF" else "ON"}"
86   ];
88   NIX_LDFLAGS = lib.concatMapStringsSep " " (e: "-rpath ${e}/lib") [
89     SDL2.out
90     SDL2_image_2_6
91     SDL2_mixer
92     SDL2_net
93     SDL2_ttf
94     libGL
95     libGLU
96     libpng.out
97     lua5_1
98     physfs
99     zlib.out
100   ];
102   qtWrapperArgs = [
103     "--prefix LD_LIBRARY_PATH : ${
104       lib.makeLibraryPath [
105         libGL
106         libGLU
107         libglut
108         physfs
109       ]
110     }"
111   ];
113   meta = with lib; {
114     description = "Turn-based strategy artillery game similar to Worms";
115     homepage = "https://hedgewars.org/";
116     license = licenses.gpl2Plus;
117     longDescription = ''
118       Each player controls a team of several hedgehogs. During the course of
119       the game, players take turns with one of their hedgehogs. They then use
120       whatever tools and weapons are available to attack and kill the
121       opponents' hedgehogs, thereby winning the game. Hedgehogs may move
122       around the terrain in a variety of ways, normally by walking and jumping
123       but also by using particular tools such as the "Rope" or "Parachute", to
124       move to otherwise inaccessible areas. Each turn is time-limited to
125       ensure that players do not hold up the game with excessive thinking or
126       moving.
128       A large variety of tools and weapons are available for players during
129       the game: Grenade, Cluster Bomb, Bazooka, UFO, Homing Bee, Shotgun,
130       Desert Eagle, Fire Punch, Baseball Bat, Dynamite, Mine, Rope, Pneumatic
131       pick, Parachute. Most weapons, when used, cause explosions that deform
132       the terrain, removing circular chunks. The landscape is an island
133       floating on a body of water, or a restricted cave with water at the
134       bottom. A hedgehog dies when it enters the water (either by falling off
135       the island, or through a hole in the bottom of it), it is thrown off
136       either side of the arena or when its health is reduced, typically from
137       contact with explosions, to zero (the damage dealt to the attacked
138       hedgehog or hedgehogs after a player's or CPU turn is shown only when
139       all movement on the battlefield has ceased).'';
140     maintainers = with maintainers; [
141       kragniz
142       fpletz
143     ];
144     broken = stdenv.hostPlatform.isDarwin;
145     platforms = platforms.linux;
146   };