diff options
Diffstat (limited to 'pkgs/games')
-rw-r--r-- | pkgs/games/chessx/default.nix | 4 | ||||
-rw-r--r-- | pkgs/games/endless-sky/default.nix | 46 | ||||
-rw-r--r-- | pkgs/games/endless-sky/fixes.patch | 45 | ||||
-rw-r--r-- | pkgs/games/flightgear/default.nix | 47 | ||||
-rw-r--r-- | pkgs/games/freeciv/default.nix | 15 | ||||
-rw-r--r-- | pkgs/games/gnuchess/default.nix | 2 | ||||
-rw-r--r-- | pkgs/games/gzdoom/default.nix | 53 | ||||
-rw-r--r-- | pkgs/games/minecraft-server/default.nix | 4 | ||||
-rw-r--r-- | pkgs/games/multimc/default.nix | 6 | ||||
-rw-r--r-- | pkgs/games/opendungeons/default.nix | 14 | ||||
-rw-r--r-- | pkgs/games/openmw/default.nix | 4 | ||||
-rw-r--r-- | pkgs/games/steam/runtime-wrapped.nix | 2 | ||||
-rw-r--r-- | pkgs/games/teeworlds/default.nix | 6 | ||||
-rw-r--r-- | pkgs/games/wesnoth/default.nix | 11 | ||||
-rw-r--r-- | pkgs/games/xboard/default.nix | 2 | ||||
-rw-r--r-- | pkgs/games/zandronum/default.nix | 30 | ||||
-rw-r--r-- | pkgs/games/zandronum/fmod.nix | 52 | ||||
-rw-r--r-- | pkgs/games/zdoom/default.nix | 65 |
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 ]; }; } |