diff --git a/pkgs/games/rigsofrods/default.nix b/pkgs/games/rigsofrods/default.nix new file mode 100644 index 00000000000..26c7e0a3667 --- /dev/null +++ b/pkgs/games/rigsofrods/default.nix @@ -0,0 +1,60 @@ +{ fetchsvn, fetchurl, stdenv, wxGTK29, freeimage, cmake, zziplib, mesa, boost, + pkgconfig, libuuid, openal, ogre, ois, curl, gtk, pixman, mygui, unzip, + angelscript, caelum, ogrepaged, mysocketw, libxcb + }: + +stdenv.mkDerivation rec { + version = "0.39.4"; + name = "rigsofrods-${version}"; + + src = fetchurl { + url = mirror://sourceforge/rigsofrods/rigsofrods-source-0.39.4.tar.bz2; + sha256 = "1kpjkski0yllwzdki0rjpqvifjs0fwpgs513y4dv4s9wfwan1qcx"; + }; + + contentPackSrc = fetchurl { + url = mirror://sourceforge/rigsofrods/rigsofrods/0.37/content-pack-0.37.zip; + sha256 = "0prvn8lxqazadad4mv0nilax9i4vqb9s7dp7mqzvqc0ycmcnf4ps"; + }; + + enableParallelBuilding = true; + + cmakeFlags = [ + "-DROR_USE_CURL=TRUE" + "-DROR_USE_MYGUI=TRUE" + "-DROR_USE_OPNEAL=TRUE" + "-DROR_USE_CAELUM=TRUE" + "-DROR_USE_PAGED=TRUE" + "-DROR_USE_ANGELSCRIPT=TRUE" + "-DROR_USE_SOCKETW=TRUE" + "-DCMAKE_BUILD_TYPE=Release" + ]; + + installPhase = '' + sed -e "s@/usr/local/lib/OGRE@${ogre}/lib/OGRE@" -i ../tools/linux/binaries/plugins.cfg + mkdir -p $out/share/rigsofrods + cp -r ../bin/* $out/share/rigsofrods + cp ../tools/linux/binaries/plugins.cfg $out/share/rigsofrods + mkdir -p $out/bin + ln -s $out/share/rigsofrods/{RoR,rorconfig} $out/bin + cd $out/share/rigsofrods + mkdir packs + cd packs + unzip "${contentPackSrc}" + ''; + + patches = [ ./doubleslash.patch ./paths.patch ]; + + buildInputs = [ wxGTK29 freeimage cmake zziplib mesa boost pkgconfig + libuuid openal ogre ois curl gtk mygui unzip angelscript + caelum ogrepaged mysocketw libxcb ]; + + meta = { + description = "3D simulator game where you can drive, fly and sail various vehicles"; + homepage = http://rigsofrods.sourceforge.net/; + license = stdenv.lib.licenses.gpl3; + maintainers = with stdenv.lib.maintainers; [viric raskin]; + platforms = stdenv.lib.platforms.linux; + hydraPlatforms = []; + }; +} diff --git a/pkgs/games/rigsofrods/doubleslash.patch b/pkgs/games/rigsofrods/doubleslash.patch new file mode 100644 index 00000000000..c62c5470dfc --- /dev/null +++ b/pkgs/games/rigsofrods/doubleslash.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeDependenciesConfig.txt b/CMakeDependenciesConfig.txt +index 447a440..e2562de 100644 +--- a/CMakeDependenciesConfig.txt ++++ b/CMakeDependenciesConfig.txt +@@ -228,7 +228,7 @@ ELSEIF(UNIX) + # Paged Geometry + find_path(PAGED_INCLUDE_DIRS "PagedGeometry/PagedGeometry.h") + if(PAGED_INCLUDE_DIRS) +- set(PAGED_INCLUDE_DIRS "${PAGED_INCLUDE_DIRS};/${PAGED_INCLUDE_DIRS}/PagedGeometry") ++ set(PAGED_INCLUDE_DIRS "${PAGED_INCLUDE_DIRS};${PAGED_INCLUDE_DIRS}/PagedGeometry") + find_library(PAGED_LIBRARIES "PagedGeometry") + set(ROR_USE_PAGED ON) + else() diff --git a/pkgs/games/rigsofrods/paths.patch b/pkgs/games/rigsofrods/paths.patch new file mode 100644 index 00000000000..e20b00a7693 --- /dev/null +++ b/pkgs/games/rigsofrods/paths.patch @@ -0,0 +1,12 @@ +diff --git a/source/main/framework/ContentManager.cpp b/source/main/framework/ContentManager.cpp +index 0bfea8c..82cdab9 100644 +--- a/source/main/framework/ContentManager.cpp ++++ b/source/main/framework/ContentManager.cpp +@@ -238,6 +238,7 @@ bool ContentManager::init(void) + #endif // USE_OPENAL + + // and the content ++ ResourceGroupManager::getSingleton().addResourceLocation(SSETTING("Program Path")+"packs", "FileSystem", "Packs", true); + ResourceGroupManager::getSingleton().addResourceLocation(SSETTING("User Path")+"packs", "FileSystem", "Packs", true); + ResourceGroupManager::getSingleton().addResourceLocation(SSETTING("User Path")+"mods", "FileSystem", "Packs", true); + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 59bf88485ef..e13d4df3cc3 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14944,6 +14944,10 @@ in openglSupport = mesaSupported; }; + rigsofrods = callPackage ../games/rigsofrods { + mygui = myguiSvn; + }; + rili = callPackage ../games/rili { }; rimshot = callPackage ../games/rimshot { love = love_0_7; };