diff options
Diffstat (limited to 'nixpkgs/pkgs/games/minetest/default.nix')
-rw-r--r-- | nixpkgs/pkgs/games/minetest/default.nix | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/minetest/default.nix b/nixpkgs/pkgs/games/minetest/default.nix new file mode 100644 index 000000000000..fcea007ff598 --- /dev/null +++ b/nixpkgs/pkgs/games/minetest/default.nix @@ -0,0 +1,138 @@ +{ lib +, stdenv +, fetchFromGitHub +, cmake +, irrlichtmt +, coreutils +, libpng +, bzip2 +, curl +, libogg +, jsoncpp +, libjpeg +, libGLU +, openal +, libvorbis +, sqlite +, lua5_1 +, luajit +, freetype +, gettext +, doxygen +, ncurses +, graphviz +, xorg +, gmp +, libspatialindex +, leveldb +, postgresql +, hiredis +, libiconv +, zlib +, libXrandr +, libX11 +, ninja +, prometheus-cpp +, OpenGL +, OpenAL ? openal +, Carbon +, Cocoa +, withTouchSupport ? false +, buildClient ? true +, buildServer ? true +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "minetest"; + version = "5.8.0"; + + src = fetchFromGitHub { + owner = "minetest"; + repo = "minetest"; + rev = finalAttrs.version; + hash = "sha256-Oct8nQORSH8PjYs+gHU9QrKObMfapjAlGvycj+AJnOs="; + }; + + cmakeFlags = [ + (lib.cmakeBool "BUILD_CLIENT" buildClient) + (lib.cmakeBool "BUILD_SERVER" buildServer) + (lib.cmakeBool "ENABLE_PROMETHEUS" buildServer) + (lib.cmakeBool "ENABLE_TOUCH" withTouchSupport) + # Ensure we use system libraries + (lib.cmakeBool "ENABLE_SYSTEM_GMP" true) + (lib.cmakeBool "ENABLE_SYSTEM_JSONCPP" true) + # Updates are handled by nix anyway + (lib.cmakeBool "ENABLE_UPDATE_CHECKER" false) + # ...but make it clear that this is a nix package + (lib.cmakeFeature "VERSION_EXTRA" "NixOS") + + # Remove when https://github.com/NixOS/nixpkgs/issues/144170 is fixed + (lib.cmakeFeature "CMAKE_INSTALL_BINDIR" "bin") + (lib.cmakeFeature "CMAKE_INSTALL_DATADIR" "share") + (lib.cmakeFeature "CMAKE_INSTALL_DOCDIR" "share/doc/minetest") + (lib.cmakeFeature "CMAKE_INSTALL_MANDIR" "share/man") + (lib.cmakeFeature "CMAKE_INSTALL_LOCALEDIR" "share/locale") + + ]; + + nativeBuildInputs = [ + cmake + doxygen + graphviz + ninja + ]; + + buildInputs = [ + irrlichtmt + jsoncpp + gettext + freetype + sqlite + curl + bzip2 + ncurses + gmp + libspatialindex + ] ++ lib.optional (lib.meta.availableOn stdenv.hostPlatform luajit) luajit + ++ lib.optionals stdenv.isDarwin [ + libiconv + OpenGL + OpenAL + Carbon + Cocoa + ] ++ lib.optionals buildClient [ + libpng + libjpeg + libGLU + openal + libogg + libvorbis + xorg.libX11 + ] ++ lib.optionals buildServer [ + leveldb + postgresql + hiredis + prometheus-cpp + ]; + + postPatch = '' + substituteInPlace src/filesys.cpp --replace "/bin/rm" "${coreutils}/bin/rm" + '' + lib.optionalString stdenv.isDarwin '' + sed -i '/pagezero_size/d;/fixup_bundle/d' src/CMakeLists.txt + ''; + + postInstall = lib.optionalString stdenv.isLinux '' + patchShebangs $out + '' + lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + mv $out/minetest.app $out/Applications + ''; + + meta = with lib; { + homepage = "https://minetest.net/"; + description = "Infinite-world block sandbox game"; + license = licenses.lgpl21Plus; + platforms = platforms.linux ++ platforms.darwin; + maintainers = with maintainers; [ pyrolagus fpletz fgaz ]; + }; +}) |