diff --git a/pkgs/games/super-tux-kart/default.nix b/pkgs/games/super-tux-kart/default.nix index 70c5657508bd..b3a7966071a7 100644 --- a/pkgs/games/super-tux-kart/default.nix +++ b/pkgs/games/super-tux-kart/default.nix @@ -1,7 +1,8 @@ -{ stdenv, fetchFromGitHub, fetchsvn, cmake, pkgconfig, makeWrapper -, openal, freealut, libGLU, libGL, libvorbis, libogg, gettext, curl, freetype -, fribidi, libtool, bluez, libjpeg, libpng, zlib, libX11, libXrandr, enet, harfbuzz }: - +{ lib, stdenv, fetchFromGitHub, fetchsvn, cmake, pkgconfig, makeWrapper +, openal, freealut, libGLU, libGL, libvorbis, libogg, gettext, curl, freetype, glew +, fribidi, libtool, bluez, libjpeg, libpng, zlib, libX11, libXrandr, harfbuzz +, mcpp, wiiuse, angelscript +}: let dir = "stk-code"; assets = fetchsvn { @@ -11,34 +12,62 @@ let name = "stk-assets"; }; + # List of bundled libraries in stk-code/lib to keep + # Those are the libraries that cannot be replaced + # with system packages. + bundledLibraries = [ + # Bullet 2.87 is incompatible (bullet 2.79 needed whereas 2.87 is packaged) + # The api changed in a lot of classes, too much work to adapt + "bullet" + # Upstream Libenet doesn't yet support IPv6, + # So we will use the bundled libenet which + # has been fixed to support it. + "enet" + # Internal library of STK, nothing to do about it + "graphics_utils" + # This irrlicht is bundled with cmake + # whereas upstream irrlicht still uses + # archaic Makefiles, too complicated to switch to. + "irrlicht" + # Not packaged to this date + "libraqm" + # Not packaged to this date + "libsquish" + ]; in stdenv.mkDerivation rec { + pname = "supertuxkart"; version = "1.1"; - srcs = [ - (fetchFromGitHub { - owner = "supertuxkart"; - repo = "stk-code"; - rev = version; - sha256 = "01vxxl94583ixswzmi4caz8dk64r56pn3zxh7v63zml60yfvxbvp"; - name = dir; - }) - ]; + src = fetchFromGitHub { + owner = "supertuxkart"; + repo = "stk-code"; + rev = version; + sha256 = "01vxxl94583ixswzmi4caz8dk64r56pn3zxh7v63zml60yfvxbvp"; + name = dir; + }; + + # Deletes all bundled libs in stk-code/lib except those + # That couldn't be replaced with system packages + postPatch = '' + find lib -maxdepth 1 -type d | egrep -v "^lib$|${(lib.concatStringsSep "|" bundledLibraries)}" | xargs -n1 -L1 -r -I{} rm -rf {} + ''; nativeBuildInputs = [ cmake gettext libtool pkgconfig makeWrapper ]; buildInputs = [ libX11 libXrandr - openal freealut libGLU libGL libvorbis libogg zlib freetype - curl fribidi bluez libjpeg libpng enet harfbuzz + openal freealut libGLU libGL libvorbis libogg zlib freetype glew + curl fribidi bluez libjpeg libpng harfbuzz + mcpp wiiuse angelscript ]; - enableParallelBuilding = true; - cmakeFlags = [ "-DBUILD_RECORDER=OFF" # libopenglrecorder is not in nixpkgs "-DUSE_SYSTEM_ANGELSCRIPT=OFF" # doesn't work with 2.31.2 or 2.32.0 "-DCHECK_ASSETS=OFF" + "-DUSE_SYSTEM_WIIUSE=ON" + "-DUSE_SYSTEM_ANGELSCRIPT=ON" ]; # Obtain the assets directly from the fetched store path, to avoid duplicating assets across multiple engine builds @@ -46,9 +75,9 @@ in stdenv.mkDerivation rec { wrapProgram $out/bin/supertuxkart --set-default SUPERTUXKART_ASSETS_DIR "${assets}" ''; - sourceRoot = dir; + enableParallelBuilding = true; - meta = with stdenv.lib; { + meta = with lib; { description = "A Free 3D kart racing game"; longDescription = '' SuperTuxKart is a Free 3D kart racing game, with many tracks,