summaryrefslogtreecommitdiffstats
path: root/pkgs/games
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games')
-rw-r--r--pkgs/games/chessx/default.nix4
-rw-r--r--pkgs/games/endless-sky/default.nix46
-rw-r--r--pkgs/games/endless-sky/fixes.patch45
-rw-r--r--pkgs/games/flightgear/default.nix47
-rw-r--r--pkgs/games/freeciv/default.nix15
-rw-r--r--pkgs/games/gnuchess/default.nix2
-rw-r--r--pkgs/games/gzdoom/default.nix53
-rw-r--r--pkgs/games/minecraft-server/default.nix4
-rw-r--r--pkgs/games/multimc/default.nix6
-rw-r--r--pkgs/games/opendungeons/default.nix14
-rw-r--r--pkgs/games/openmw/default.nix4
-rw-r--r--pkgs/games/steam/runtime-wrapped.nix2
-rw-r--r--pkgs/games/teeworlds/default.nix6
-rw-r--r--pkgs/games/wesnoth/default.nix11
-rw-r--r--pkgs/games/xboard/default.nix2
-rw-r--r--pkgs/games/zandronum/default.nix30
-rw-r--r--pkgs/games/zandronum/fmod.nix52
-rw-r--r--pkgs/games/zdoom/default.nix65
18 files changed, 311 insertions, 97 deletions
diff --git a/pkgs/games/chessx/default.nix b/pkgs/games/chessx/default.nix
index 404b3b90d7cd..f1dd86d67b92 100644
--- a/pkgs/games/chessx/default.nix
+++ b/pkgs/games/chessx/default.nix
@@ -17,7 +17,9 @@ stdenv.mkDerivation rec {
qmakeHook
];
- enableParallelBuilding = true;
+ # RCC: Error in 'resources.qrc': Cannot find file 'i18n/chessx_da.qm'
+ #enableParallelBuilding = true;
+
installPhase = ''
runHook preInstall
mkdir -p "$out/bin"
diff --git a/pkgs/games/endless-sky/default.nix b/pkgs/games/endless-sky/default.nix
new file mode 100644
index 000000000000..f993ad1b8e09
--- /dev/null
+++ b/pkgs/games/endless-sky/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchFromGitHub
+, SDL2, libpng, libjpeg, glew, openal, scons
+}:
+
+let
+ version = "0.9.4";
+
+in
+stdenv.mkDerivation rec {
+ name = "endless-sky-${version}";
+
+ src = fetchFromGitHub {
+ owner = "endless-sky";
+ repo = "endless-sky";
+ rev = "v${version}";
+ sha256 = "1mirdcpap0a280j472lhmhqg605b7glvdr4l93qcapk8an8d46m7";
+ };
+
+ enableParallelBuilding = true;
+
+ buildInputs = [
+ SDL2 libpng libjpeg glew openal scons
+ ];
+
+ patches = [
+ ./fixes.patch
+ ];
+
+ buildPhase = ''
+ scons -j$NIX_BUILD_CORES PREFIX="$out"
+ '';
+
+ installPhase = ''
+ scons -j$NIX_BUILD_CORES install PREFIX="$out"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A sandbox-style space exploration game similar to Elite, Escape Velocity, or Star Control";
+ homepage = "https://endless-sky.github.io/";
+ license = with licenses; [
+ gpl3Plus cc-by-sa-30 cc-by-sa-40 publicDomain
+ ];
+ maintainers = with maintainers; [ lheckemann ];
+ platforms = with platforms; allBut darwin;
+ };
+}
diff --git a/pkgs/games/endless-sky/fixes.patch b/pkgs/games/endless-sky/fixes.patch
new file mode 100644
index 000000000000..cad7a6acaed0
--- /dev/null
+++ b/pkgs/games/endless-sky/fixes.patch
@@ -0,0 +1,45 @@
+diff --git a/SConstruct b/SConstruct
+index 48fd080..419b40d 100644
+--- a/SConstruct
++++ b/SConstruct
+@@ -1,7 +1,7 @@
+ import os
+
+ # Load any environment variables that alter the build.
+-env = Environment()
++env = Environment(ENV = os.environ)
+ if 'CCFLAGS' in os.environ:
+ env.Append(CCFLAGS = os.environ['CCFLAGS'])
+ if 'CXXFLAGS' in os.environ:
+@@ -55,7 +55,7 @@ sky = env.Program("endless-sky", Glob("build/" + env["mode"] + "/*.cpp"))
+
+
+ # Install the binary:
+-env.Install("$DESTDIR$PREFIX/games", sky)
++env.Install("$DESTDIR$PREFIX/bin", sky)
+
+ # Install the desktop file:
+ env.Install("$DESTDIR$PREFIX/share/applications", "endless-sky.desktop")
+diff --git a/source/Files.cpp b/source/Files.cpp
+index c8c8957..d196459 100644
+--- a/source/Files.cpp
++++ b/source/Files.cpp
+@@ -114,15 +114,9 @@ void Files::Init(const char * const *argv)
+ if(resources.back() != '/')
+ resources += '/';
+ #if defined __linux__ || defined __FreeBSD__ || defined __DragonFly__
+- // Special case, for Linux: the resource files are not in the same place as
+- // the executable, but are under the same prefix (/usr or /usr/local).
+- static const string LOCAL_PATH = "/usr/local/";
+- static const string STANDARD_PATH = "/usr/";
+- static const string RESOURCE_PATH = "share/games/endless-sky/";
+- if(!resources.compare(0, LOCAL_PATH.length(), LOCAL_PATH))
+- resources = LOCAL_PATH + RESOURCE_PATH;
+- else if(!resources.compare(0, STANDARD_PATH.length(), STANDARD_PATH))
+- resources = STANDARD_PATH + RESOURCE_PATH;
++ // Workaround for NixOS. Not sure how to proceed with other OSes, feedback
++ // is welcome.
++ resources += "../share/games/endless-sky/";
+ #elif defined __APPLE__
+ // Special case for Mac OS X: the resources are in ../Resources relative to
+ // the folder the binary is in.
diff --git a/pkgs/games/flightgear/default.nix b/pkgs/games/flightgear/default.nix
index b55a37e99857..1a1b3a10895c 100644
--- a/pkgs/games/flightgear/default.nix
+++ b/pkgs/games/flightgear/default.nix
@@ -1,22 +1,36 @@
-{ stdenv, fetchurl
+{ stdenv, fetchurl, makeWrapper
, freeglut, freealut, mesa, libICE, libjpeg, openal, openscenegraph, plib
, libSM, libunwind, libX11, xproto, libXext, xextproto, libXi, inputproto
, libXmu, libXt, simgear, zlib, boost, cmake, libpng, udev, fltk13, apr
, makeDesktopItem, qtbase
}:
+let
+ version = "2016.4.3";
+ shortVersion = "2016.4";
+ data = stdenv.mkDerivation rec {
+ name = "flightgear-base-${version}";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/flightgear/release-${shortVersion}/FlightGear-${version}-data.tar.bz2";
+ sha256 = "1wy4fg6r79a635rrjy2a2a6jkz2p5zzahxs0hz7scgxg4ikb5xp4";
+ };
+
+ phases = [ "installPhase" ];
+
+ installPhase = ''
+ mkdir -p "$out/share/FlightGear"
+ tar xf "${src}" -C "$out/share/FlightGear/" --strip-components=1
+ '';
+ };
+in
stdenv.mkDerivation rec {
- version = "3.4.0";
name = "flightgear-${version}";
+ inherit version;
src = fetchurl {
- url = "http://ftp.igh.cnrs.fr/pub/flightgear/ftp/Source/${name}.tar.bz2";
- sha256 = "102pg7mahgxzypvyp76x363qy3a4gxavr4hj16gsha07nl2msr5m";
- };
-
- datasrc = fetchurl {
- url = "http://ftp.igh.cnrs.fr/pub/flightgear/ftp/Shared/FlightGear-data-${version}.tar.bz2";
- sha256 = "12qjvycizg693g5jj5qyp1jiwwywg6p9fg6j3zjxhx6r4g1sgvwc";
+ url = "mirror://sourceforge/flightgear/release-${shortVersion}/${name}.tar.bz2";
+ sha256 = "08i8dlia3aral2wwf72n5q5ji4vxj51bnn24g6prqjjy4qww9a9m";
};
# Of all the files in the source and data archives, there doesn't seem to be
@@ -37,21 +51,22 @@ stdenv.mkDerivation rec {
};
buildInputs = [
+ makeWrapper
freeglut freealut mesa libICE libjpeg openal openscenegraph plib
libSM libunwind libX11 xproto libXext xextproto libXi inputproto
libXmu libXt simgear zlib boost cmake libpng udev fltk13 apr qtbase
];
- preConfigure = ''
- export cmakeFlagsArray=(-DFG_DATA_DIR="$out/share/FlightGear/")
- '';
-
postInstall = ''
mkdir -p "$out/share/applications/"
- cp "${desktopItem}"/share/applications/* "$out/share/applications/"
+ cp "${desktopItem}"/share/applications/* "$out/share/applications/" #*/
+
+ for f in $out/bin/* #*/
+ do
+ wrapProgram $f --set FG_ROOT "${data}/share/FlightGear"
+ done
+
- mkdir -p "$out/share/FlightGear"
- tar xvf "${datasrc}" -C "$out/share/FlightGear/" --strip-components=1
'';
meta = with stdenv.lib; {
diff --git a/pkgs/games/freeciv/default.nix b/pkgs/games/freeciv/default.nix
index b5619644bd81..608b1a011200 100644
--- a/pkgs/games/freeciv/default.nix
+++ b/pkgs/games/freeciv/default.nix
@@ -1,7 +1,9 @@
{ stdenv, fetchurl, zlib, bzip2, pkgconfig, curl, lzma, gettext
, sdlClient ? true, SDL, SDL_mixer, SDL_image, SDL_ttf, SDL_gfx, freetype, fluidsynth
, gtkClient ? false, gtk2
-, server ? true, readline }:
+, server ? true, readline
+, enableSqlite ? true, sqlite
+}:
let
inherit (stdenv.lib) optional optionals;
@@ -10,14 +12,15 @@ let
gtkName = if gtkClient then "-gtk" else "";
name = "freeciv";
- version = "2.5.3";
+ version = "2.5.6";
in
stdenv.mkDerivation {
name = "${name}${sdlName}${gtkName}-${version}";
+ inherit version;
src = fetchurl {
url = "mirror://sourceforge/freeciv/${name}-${version}.tar.bz2";
- sha256 = "0p40bpkhbldsnlqdvfn3qd2vzadxfrfsf1r57x1akwabqs0h62s8";
+ sha256 = "16wrnsx5rmbz6rjs03bhy0vn20i6n6g73lx7fjpai98ixhzc5bfg";
};
nativeBuildInputs = [ pkgconfig ];
@@ -25,10 +28,12 @@ stdenv.mkDerivation {
buildInputs = [ zlib bzip2 curl lzma gettext ]
++ optionals sdlClient [ SDL SDL_mixer SDL_image SDL_ttf SDL_gfx freetype fluidsynth ]
++ optionals gtkClient [ gtk2 ]
- ++ optional server readline;
+ ++ optional server readline
+ ++ optional enableSqlite sqlite;
- configureFlags = []
+ configureFlags = [ "--enable-shared" ]
++ optional sdlClient "--enable-client=sdl"
+ ++ optional enableSqlite "--enable-fcdb=sqlite3"
++ optional (!gtkClient) "--enable-fcmp=cli"
++ optional (!server) "--disable-server";
diff --git a/pkgs/games/gnuchess/default.nix b/pkgs/games/gnuchess/default.nix
index 9b0ada3f9260..c61d46e9d339 100644
--- a/pkgs/games/gnuchess/default.nix
+++ b/pkgs/games/gnuchess/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
inherit (s) version;
description = "GNU Chess engine";
maintainers = [stdenv.lib.maintainers.raskin];
- platforms = stdenv.lib.platforms.linux;
+ platforms = stdenv.lib.platforms.unix;
license = stdenv.lib.licenses.gpl3Plus;
};
}
diff --git a/pkgs/games/gzdoom/default.nix b/pkgs/games/gzdoom/default.nix
index 332c2fbeff14..9e6cc48b435c 100644
--- a/pkgs/games/gzdoom/default.nix
+++ b/pkgs/games/gzdoom/default.nix
@@ -1,34 +1,51 @@
-{stdenv, fetchFromGitHub, cmake, fmod, mesa, SDL2}:
+{ stdenv, fetchFromGitHub, cmake, zdoom
+, openal, fluidsynth, soundfont-fluid, mesa_noglu, SDL2
+, bzip2, zlib, libjpeg, libsndfile, mpg123, game-music-emu }:
-stdenv.mkDerivation {
- name = "gzdoom-2015-05-07";
- src = fetchFromGitHub{
+stdenv.mkDerivation rec {
+ name = "gzdoom-${version}";
+ version = "2.2.0";
+
+ src = fetchFromGitHub {
owner = "coelckers";
repo = "gzdoom";
- rev = "a59824cd8897dea5dd452c31be1328415478f990";
- sha256 = "1lg9dk5prn2bjmyznq941a862alljvfgbb42whbpg0vw9vhpikak";
+ rev = "g${version}";
+ sha256 = "0xxgd8fa29pcdir1xah5cvx41bfy76p4dydpp13mf44p9pr29hrb";
};
- buildInputs = [ cmake fmod mesa SDL2 ];
+ nativeBuildInputs = [ cmake ];
+ buildInputs = [
+ SDL2 mesa_noglu openal fluidsynth bzip2 zlib libjpeg libsndfile mpg123
+ game-music-emu
+ ];
+
+ enableParallelBuilding = true;
- cmakeFlags = [ "-DFMOD_LIBRARY=${fmod}/lib/libfmodex.so" ];
+ NIX_CFLAGS_LINK = [ "-lopenal" "-lfluidsynth" ];
- preConfigure=''
- sed s@gzdoom.pk3@$out/share/gzdoom.pk3@ -i src/version.h
+ preConfigure = ''
+ sed -i \
+ -e "s@/usr/share/sounds/sf2/@${soundfont-fluid}/share/soundfonts/@g" \
+ -e "s@FluidR3_GM.sf2@FluidR3_GM2-2.sf2@g" \
+ src/sound/music_fluidsynth_mididevice.cpp
'';
installPhase = ''
- mkdir -p $out/bin
- cp gzdoom $out/bin
- mkdir -p $out/share
- cp gzdoom.pk3 $out/share
+ install -Dm755 gzdoom "$out/lib/gzdoom/gzdoom"
+ for i in *.pk3; do
+ install -Dm644 "$i" "$out/lib/gzdoom/$i"
+ done
+ mkdir $out/bin
+ ln -s $out/lib/gzdoom/gzdoom $out/bin/gzdoom
'';
- meta = {
- homepage = https://github.com/coelckers/gzdoom;
+ meta = with stdenv.lib; {
+ homepage = "https://github.com/coelckers/gzdoom";
description = "A Doom source port based on ZDoom. It features an OpenGL renderer and lots of new features";
- license = stdenv.lib.licenses.unfree;
- maintainers = [ stdenv.lib.maintainers.lassulus ];
+ # Doom source license, MAME license
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ lassulus ];
};
}
diff --git a/pkgs/games/minecraft-server/default.nix b/pkgs/games/minecraft-server/default.nix
index 8590f9a7420b..781dc5e31d83 100644
--- a/pkgs/games/minecraft-server/default.nix
+++ b/pkgs/games/minecraft-server/default.nix
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "minecraft-server-${version}";
- version = "1.11";
+ version = "1.11.1";
src = fetchurl {
url = "http://s3.amazonaws.com/Minecraft.Download/versions/${version}/minecraft_server.${version}.jar";
- sha256 = "10vgvkklv3l66cvin2ikva2nj86gjl6p9ffizd6r89ixv1grcxrj";
+ sha256 = "161cwwcv73zisac1biz9arrby8y8n0j4bn9hz9rvy8dszlrbq0l0";
};
preferLocalBuild = true;
diff --git a/pkgs/games/multimc/default.nix b/pkgs/games/multimc/default.nix
index 00d4fbf84511..71c7e300a639 100644
--- a/pkgs/games/multimc/default.nix
+++ b/pkgs/games/multimc/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, cmake, qt5Full, jdk7, zlib, file, makeWrapper, xorg, libpulseaudio, qt5 }:
+{ stdenv, fetchFromGitHub, cmake, qt5Full, jdk, zlib, file, makeWrapper, xorg, libpulseaudio, qt5 }:
let
libnbt = fetchFromGitHub {
@@ -16,7 +16,7 @@ stdenv.mkDerivation {
rev = "895d8ab4699f1b50bf03532c967a91f5ecb62a50";
sha256 = "179vc1iv57fx4g4h1wy8yvyvdm671jnvp6zi8pcr1n6azqhwklds";
};
- buildInputs = [ cmake qt5Full jdk7 zlib file makeWrapper ];
+ buildInputs = [ cmake qt5Full jdk zlib file makeWrapper ];
libpath = with xorg; [ libX11 libXext libXcursor libXrandr libXxf86vm libpulseaudio ];
postUnpack = ''
@@ -42,7 +42,7 @@ stdenv.mkDerivation {
cp -v MultiMC $out/bin/
cp -v jars/*.jar $out/bin/jars/ #*/
cp -v librainbow.so libnbt++.so libMultiMC_logic.so $out/lib
- wrapProgram $out/bin/MultiMC --add-flags "-d \$HOME/.multimc/" --set GAME_LIBRARY_PATH $RESULT --prefix PATH : ${jdk7}/bin/
+ wrapProgram $out/bin/MultiMC --add-flags "-d \$HOME/.multimc/" --set GAME_LIBRARY_PATH $RESULT --prefix PATH : ${jdk}/bin/
'';
meta = with stdenv.lib; {
diff --git a/pkgs/games/opendungeons/default.nix b/pkgs/games/opendungeons/default.nix
index fe3a381c7f5b..94a44446b6cd 100644
--- a/pkgs/games/opendungeons/default.nix
+++ b/pkgs/games/opendungeons/default.nix
@@ -1,17 +1,19 @@
-{ stdenv, fetchurl, ogre, cegui, boost, sfml, openal, cmake, ois }:
+{ stdenv, fetchFromGitHub, ogre, cegui, boost, sfml, openal, cmake, ois, pkgconfig }:
stdenv.mkDerivation rec {
name = "opendungeons-${version}";
- version = "0.6.0";
+ version = "0.7.1";
- src = fetchurl {
- url = "ftp://download.tuxfamily.org/opendungeons/${version}/${name}.tar.xz";
- sha256 = "1g0sjh732794h26cbkr0p96i3c0avm0mx9ip5zbvb2y3sbpjcbib";
+ src = fetchFromGitHub {
+ owner = "OpenDungeons";
+ repo = "OpenDungeons";
+ rev = version;
+ sha256 = "0nipb2h0gn628yxlahjgnfhmpfqa19mjdbj3aqabimdfqds9pryh";
};
patches = [ ./cmakepaths.patch ];
- buildInputs = [ cmake ogre cegui boost sfml openal ois ];
+ buildInputs = [ cmake ogre cegui boost sfml openal ois pkgconfig ];
meta = with stdenv.lib; {
description = "An open source, real time strategy game sharing game elements with the Dungeon Keeper series and Evil Genius.";
diff --git a/pkgs/games/openmw/default.nix b/pkgs/games/openmw/default.nix
index f9be01aa9289..8b3998aa6194 100644
--- a/pkgs/games/openmw/default.nix
+++ b/pkgs/games/openmw/default.nix
@@ -11,14 +11,14 @@ let
};
});
in stdenv.mkDerivation rec {
- version = "0.40.0";
+ version = "0.41.0";
name = "openmw-${version}";
src = fetchFromGitHub {
owner = "OpenMW";
repo = "openmw";
rev = name;
- sha256 = "0mqd4gpwvczwqfkw5zvnw7cl1nzv9lkiqq2yc2a0qasaby8qv94w";
+ sha256 = "1qay278965i7ja2rjllhcqfq7zpbapd7w57xly02apniadyfg0yz";
};
enableParallelBuilding = true;
diff --git a/pkgs/games/steam/runtime-wrapped.nix b/pkgs/games/steam/runtime-wrapped.nix
index 38d73f59deec..d9d6e0ecf0d0 100644
--- a/pkgs/games/steam/runtime-wrapped.nix
+++ b/pkgs/games/steam/runtime-wrapped.nix
@@ -44,7 +44,7 @@ let
libav
atk
# Only libraries are needed from those two
- udev182
+ libudev0-shim
networkmanager098
# Verified games requirements
diff --git a/pkgs/games/teeworlds/default.nix b/pkgs/games/teeworlds/default.nix
index ea337c208dff..504353afebef 100644
--- a/pkgs/games/teeworlds/default.nix
+++ b/pkgs/games/teeworlds/default.nix
@@ -3,11 +3,11 @@
}:
stdenv.mkDerivation rec {
- name = "teeworlds-0.6.3";
+ name = "teeworlds-0.6.4";
src = fetchurl {
- url = "https://downloads.teeworlds.com/teeworlds-0.6.3-src.tar.gz";
- sha256 = "0yq7f3yan07sxrhz7mzwqv344nfmdc67p3dg173631w9fb1yf3j9";
+ url = "https://downloads.teeworlds.com/teeworlds-0.6.4-src.tar.gz";
+ sha256 = "1qlqzp4wqh1vnip081lbsjnx5jj5m5y4msrcm8glbd80pfgd2qf2";
};
# we always want to use system libs instead of these
diff --git a/pkgs/games/wesnoth/default.nix b/pkgs/games/wesnoth/default.nix
index a7352f0a75c4..7e5cdae57fa6 100644
--- a/pkgs/games/wesnoth/default.nix
+++ b/pkgs/games/wesnoth/default.nix
@@ -1,6 +1,6 @@
{ stdenv, fetchurl, cmake, pkgconfig, SDL, SDL_image, SDL_mixer, SDL_net, SDL_ttf
, pango, gettext, boost, freetype, libvorbis, fribidi, dbus, libpng, pcre
-, enableTools ? false
+, makeWrapper, enableTools ? false
}:
stdenv.mkDerivation rec {
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
sha256 = "0kifp6g1dsr16m6ngjq2hx19h851fqg326ps3krnhpyix963h3x5";
};
- nativeBuildInputs = [ cmake pkgconfig ];
+ nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
buildInputs = [ SDL SDL_image SDL_mixer SDL_net SDL_ttf pango gettext boost
libvorbis fribidi dbus libpng pcre ];
@@ -23,6 +23,13 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
+ # Wesnoth doesn't support input frameworks and Unicode input breaks when they are enabled.
+ postInstall = ''
+ for i in $out/bin/*; do
+ wrapProgram "$i" --unset XMODIFIERS
+ done
+ '';
+
meta = with stdenv.lib; {
description = "The Battle for Wesnoth, a free, turn-based strategy game with a fantasy theme";
longDescription = ''
diff --git a/pkgs/games/xboard/default.nix b/pkgs/games/xboard/default.nix
index 46d3873659ff..442aad46fea8 100644
--- a/pkgs/games/xboard/default.nix
+++ b/pkgs/games/xboard/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation {
inherit (s) version;
description = ''GUI for chess engines'';
maintainers = [stdenv.lib.maintainers.raskin];
- platforms = stdenv.lib.platforms.linux;
+ platforms = stdenv.lib.platforms.unix;
license = stdenv.lib.licenses.gpl3Plus;
};
}
diff --git a/pkgs/games/zandronum/default.nix b/pkgs/games/zandronum/default.nix
index 39c1ea6b7469..7b4185594189 100644
--- a/pkgs/games/zandronum/default.nix
+++ b/pkgs/games/zandronum/default.nix
@@ -1,9 +1,11 @@
-{ stdenv, lib, fetchhg, cmake, pkgconfig, makeWrapper
-, SDL, mesa, bzip2, zlib, fmod, libjpeg, fluidsynth, openssl, sqlite-amalgamation
+{ stdenv, lib, fetchhg, cmake, pkgconfig, makeWrapper, callPackage
+, soundfont-fluid, SDL, mesa, bzip2, zlib, libjpeg, fluidsynth, openssl, sqlite-amalgamation, gtk2
, serverOnly ? false
}:
-let suffix = lib.optionalString serverOnly "-server";
+let
+ suffix = lib.optionalString serverOnly "-server";
+ fmod = callPackage ./fmod.nix { };
# FIXME: drop binary package when upstream fixes their protocol versioning
in stdenv.mkDerivation {
@@ -18,7 +20,7 @@ in stdenv.mkDerivation {
# I have no idea why would SDL and libjpeg be needed for the server part!
# But they are.
buildInputs = [ openssl bzip2 zlib SDL libjpeg ]
- ++ lib.optionals (!serverOnly) [ mesa fmod fluidsynth ];
+ ++ lib.optionals (!serverOnly) [ mesa fmod fluidsynth gtk2 ];
nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
@@ -26,6 +28,11 @@ in stdenv.mkDerivation {
ln -s ${sqlite-amalgamation}/* sqlite/
sed -ie 's| restrict| _restrict|g' dumb/include/dumb.h \
dumb/src/it/*.c
+ '' + lib.optionalString serverOnly ''
+ sed -i \
+ -e "s@/usr/share/sounds/sf2/@${soundfont-fluid}/share/soundfonts/@g" \
+ -e "s@FluidR3_GM.sf2@FluidR3_GM2-2.sf2@g" \
+ src/sound/music_fluidsynth_mididevice.cpp
'';
cmakeFlags =
@@ -39,27 +46,26 @@ in stdenv.mkDerivation {
installPhase = ''
mkdir -p $out/bin
- mkdir -p $out/share/zandronum
+ mkdir -p $out/lib/zandronum
cp zandronum${suffix} \
- zandronum.pk3 \
- skulltag_actors.pk3 \
+ *.pk3 \
${lib.optionalString (!serverOnly) "liboutput_sdl.so"} \
- $out/share/zandronum
+ $out/lib/zandronum
# For some reason, while symlinks work for binary version, they don't for source one.
- makeWrapper $out/share/zandronum/zandronum${suffix} $out/bin/zandronum${suffix}
+ makeWrapper $out/lib/zandronum/zandronum${suffix} $out/bin/zandronum${suffix}
'';
postFixup = lib.optionalString (!serverOnly) ''
- patchelf --set-rpath $(patchelf --print-rpath $out/share/zandronum/zandronum):$out/share/zandronum \
- $out/share/zandronum/zandronum
+ patchelf --set-rpath $(patchelf --print-rpath $out/lib/zandronum/zandronum):$out/lib/zandronum \
+ $out/lib/zandronum/zandronum
'';
meta = with stdenv.lib; {
homepage = http://zandronum.com/;
description = "Multiplayer oriented port, based off Skulltag, for Doom and Doom II by id Software";
maintainers = with maintainers; [ lassulus ];
- license = stdenv.lib.licenses.unfree;
+ license = licenses.unfreeRedistributable;
platforms = platforms.linux;
};
}
diff --git a/pkgs/games/zandronum/fmod.nix b/pkgs/games/zandronum/fmod.nix
new file mode 100644
index 000000000000..b45ec24ca6bd
--- /dev/null
+++ b/pkgs/games/zandronum/fmod.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl }:
+
+assert (stdenv.system == "x86_64-linux") || (stdenv.system == "i686-linux");
+let
+ bits = stdenv.lib.optionalString (stdenv.system == "x86_64-linux") "64";
+
+ libPath = stdenv.lib.makeLibraryPath
+ [ stdenv.cc.libc stdenv.cc.cc ] + ":${stdenv.cc.cc.lib}/lib64";
+ patchLib = x: "patchelf --set-rpath ${libPath} ${x}";
+
+ src =
+ (if (bits == "64") then
+ fetchurl {
+ url = "http://zandronum.com/essentials/fmod/fmodapi42416linux64.tar.gz";
+ sha256 = "0hkwlzchzzgd7fanqznbv5bs53z2qy8iiv9l2y77l4sg1jwmlm6y";
+ }
+ else
+ fetchurl {
+ url = "http://zandronum.com/essentials/fmod/fmodapi42416linux.tar.gz";
+ sha256 = "13diw3ax2slkr99mwyjyc62b8awc30k0z08cvkpk2p3i1j6f85m5";
+ }
+ );
+in
+stdenv.mkDerivation rec {
+ inherit src;
+
+ name = "fmod-${version}";
+ version = "4.24.16";
+
+ dontStrip = true;
+ dontPatchELF = true;
+ dontBuild = true;
+
+ makeFlags = [ "DESTLIBDIR=$(out)/lib" "DESTHDRDIR=$(out)/include" ];
+
+ preInstall = ''
+ mkdir -p $out/lib
+ '';
+
+ postInstall = ''
+ mv $out/lib/libfmodex${bits}-${version}.so $out/lib/libfmodex.so
+ mv $out/lib/libfmodexp${bits}-${version}.so $out/lib/libfmodexp.so
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Programming library and toolkit for the creation and playback of interactive audio";
+ homepage = "http://www.fmod.org/";
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.linux;
+ maintainers = [ stdenv.lib.maintainers.lassulus ];
+ };
+}
diff --git a/pkgs/games/zdoom/default.nix b/pkgs/games/zdoom/default.nix
index ce25f3efda3f..a217c7217b6e 100644
--- a/pkgs/games/zdoom/default.nix
+++ b/pkgs/games/zdoom/default.nix
@@ -1,40 +1,57 @@
-{ stdenv, fetchFromGitHub, cmake, fmod, mesa, SDL }:
-
-stdenv.mkDerivation {
- name = "zdoom-2.7.1";
- src = fetchFromGitHub {
- #url = "https://github.com/rheit/zdoom";
- owner = "rheit";
- repo = "zdoom";
- rev = "2.7.1";
- sha256 = "00bx4sgl9j1dyih7yysfq4ah6msxw8580g53p99jfym34ky5ppkh";
+{ stdenv, fetchurl, p7zip, cmake
+, SDL2, openal, fluidsynth, soundfont-fluid, bzip2, zlib, libjpeg, game-music-emu
+, libsndfile, mpg123 }:
+
+stdenv.mkDerivation rec {
+ name = "zdoom-${version}";
+ majorVersion = "2.8";
+ version = "${majorVersion}.1";
+
+ src = fetchurl {
+ url = "https://zdoom.org/files/zdoom/${majorVersion}/zdoom-${version}-src.7z";
+ sha256 = "0453fqrh9l00xwphfxni5qkf9y134n3s1mr1dvi5cbkxcva7j8bq";
};
- buildInputs = [ cmake fmod mesa SDL ];
+ nativeBuildInputs = [ p7zip cmake ];
+ buildInputs = [
+ SDL2 openal fluidsynth bzip2 zlib libjpeg game-music-emu libsndfile mpg123
+ ];
cmakeFlags = [
- "-DFMOD_LIBRARY=${fmod}/lib/libfmodex.so"
- "-DSDL_INCLUDE_DIR=${SDL.dev}/include"
+ "-DFORCE_INTERNAL_GME=OFF"
+ "-DGME_INCLUDE_DIR=${game-music-emu}/include"
+ "-DGME_LIBRARIES=${game-music-emu}/lib/libgme.so"
];
- NIX_CFLAGS_COMPILE = [ "-I ${SDL.dev}/include/SDL" ];
-
+ sourceRoot = ".";
+
+ enableParallelBuilding = true;
+
+ NIX_CFLAGS_LINK = [ "-lopenal" "-lfluidsynth" ];
+
preConfigure = ''
- sed s@zdoom.pk3@$out/share/zdoom.pk3@ -i src/version.h
- '';
+ sed -i \
+ -e "s@/usr/share/sounds/sf2/@${soundfont-fluid}/share/soundfonts/@g" \
+ -e "s@FluidR3_GM.sf2@FluidR3_GM2-2.sf2@g" \
+ src/sound/music_fluidsynth_mididevice.cpp
+ '';
installPhase = ''
+ install -Dm755 zdoom "$out/lib/zdoom/zdoom"
+ for i in *.pk3; do
+ install -Dm644 "$i" "$out/lib/zdoom/$i"
+ done
mkdir -p $out/bin
- cp zdoom $out/bin
- mkdir -p $out/share
- cp zdoom.pk3 $out/share
+ ln -s $out/lib/zdoom/zdoom $out/bin/zdoom
'';
- meta = {
- homepage = http://zdoom.org/;
+ meta = with stdenv.lib; {
+ homepage = "http://zdoom.org/";
description = "Enhanced port of the official DOOM source code";
- license = stdenv.lib.licenses.unfree;
- maintainers = [ stdenv.lib.maintainers.lassulus ];
+ # Doom source license, MAME license
+ license = licenses.unfreeRedistributable;
+ platforms = platforms.linux;
+ maintainers = with maintainers; [ lassulus ];
};
}