about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/hedgewars/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/hedgewars/default.nix')
-rw-r--r--nixpkgs/pkgs/games/hedgewars/default.nix80
1 files changed, 80 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/hedgewars/default.nix b/nixpkgs/pkgs/games/hedgewars/default.nix
new file mode 100644
index 000000000000..6953ac2f57a5
--- /dev/null
+++ b/nixpkgs/pkgs/games/hedgewars/default.nix
@@ -0,0 +1,80 @@
+{ SDL2_image, SDL2_ttf, SDL2_net, fpc, qt5, ghcWithPackages, ffmpeg, freeglut
+, stdenv, makeWrapper, fetchurl, cmake, pkgconfig, lua5_1, SDL2, SDL2_mixer
+, zlib, libpng, libGLU_combined, physfs
+}:
+
+let
+  ghc = ghcWithPackages (pkgs: with pkgs; [
+          network vector utf8-string /* broken: bytestring-show */ random hslogger
+          SHA entropy pkgs.zlib sandi regex-tdfa
+        ]);
+in
+stdenv.mkDerivation rec {
+  version = "0.9.25";
+  name = "hedgewars-${version}";
+  src = fetchurl {
+    url = "https://www.hedgewars.org/download/releases/hedgewars-src-${version}.tar.bz2";
+    sha256 = "08x7fqpy0hpnbfq2k06g522xayi7s53bca819zfhalvqnqs76pdk";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    SDL2_ttf SDL2_net cmake lua5_1 SDL2 SDL2_mixer SDL2_image fpc
+    ghc ffmpeg freeglut makeWrapper physfs
+    qt5.qttools qt5.qtbase
+  ];
+
+  postPatch = ''
+    substituteInPlace gameServer/CMakeLists.txt --replace mask evaluate
+  '';
+
+  preBuild = ''
+    export NIX_LDFLAGS="$NIX_LDFLAGS -rpath ${SDL2_image}/lib
+                                     -rpath ${SDL2_mixer}/lib
+                                     -rpath ${SDL2_net}/lib
+                                     -rpath ${SDL2_ttf}/lib
+                                     -rpath ${SDL2.out}/lib
+                                     -rpath ${libpng.out}/lib
+                                     -rpath ${lua5_1}/lib
+                                     -rpath ${libGLU_combined}/lib
+                                     -rpath ${zlib.out}/lib
+                                     "
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/hwengine --prefix LD_LIBRARY_PATH : $LD_LIBRARY_PATH:${stdenv.lib.makeLibraryPath [ libGLU_combined freeglut physfs ]}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Turn-based strategy artillery game similar to Worms";
+    homepage = http://hedgewars.org/;
+    license = licenses.gpl2;
+    longDescription = ''
+       Each player controls a team of several hedgehogs. During the course of
+       the game, players take turns with one of their hedgehogs. They then use
+       whatever tools and weapons are available to attack and kill the
+       opponents' hedgehogs, thereby winning the game. Hedgehogs may move
+       around the terrain in a variety of ways, normally by walking and jumping
+       but also by using particular tools such as the "Rope" or "Parachute", to
+       move to otherwise inaccessible areas. Each turn is time-limited to
+       ensure that players do not hold up the game with excessive thinking or
+       moving.
+
+       A large variety of tools and weapons are available for players during
+       the game: Grenade, Cluster Bomb, Bazooka, UFO, Homing Bee, Shotgun,
+       Desert Eagle, Fire Punch, Baseball Bat, Dynamite, Mine, Rope, Pneumatic
+       pick, Parachute. Most weapons, when used, cause explosions that deform
+       the terrain, removing circular chunks. The landscape is an island
+       floating on a body of water, or a restricted cave with water at the
+       bottom. A hedgehog dies when it enters the water (either by falling off
+       the island, or through a hole in the bottom of it), it is thrown off
+       either side of the arena or when its health is reduced, typically from
+       contact with explosions, to zero (the damage dealt to the attacked
+       hedgehog or hedgehogs after a player's or CPU turn is shown only when
+       all movement on the battlefield has ceased).'';
+    maintainers = with maintainers; [ kragniz fpletz ];
+    platforms = ghc.meta.platforms;
+    hydraPlatforms = [];
+    broken = true;  # depends on broken Haskell package bytestring-show
+  };
+}