about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/minetest/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/games/minetest/default.nix')
-rw-r--r--nixpkgs/pkgs/games/minetest/default.nix86
1 files changed, 86 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..cf20651aa3ea
--- /dev/null
+++ b/nixpkgs/pkgs/games/minetest/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchFromGitHub, cmake, irrlicht, libpng, bzip2, curl, libogg, jsoncpp
+, libjpeg, libXxf86vm, libGLU_combined, openal, libvorbis, xlibsWrapper, sqlite, luajit
+, freetype, gettext, doxygen, ncurses, graphviz, xorg
+, leveldb, postgresql, hiredis
+}:
+
+with stdenv.lib;
+
+let
+  boolToCMake = b: if b then "ON" else "OFF";
+
+  generic = { version, rev ? version, sha256, dataRev ? version, dataSha256, buildClient ? true, buildServer ? false }: let
+    sources = {
+      src = fetchFromGitHub {
+        owner = "minetest";
+        repo = "minetest";
+        inherit rev sha256;
+      };
+      data = fetchFromGitHub {
+        owner = "minetest";
+        repo = "minetest_game";
+        rev = dataRev;
+        sha256 = dataSha256;
+      };
+    };
+  in stdenv.mkDerivation {
+    name = "minetest-${version}";
+
+    src = sources.src;
+
+    cmakeFlags = [
+      "-DBUILD_CLIENT=${boolToCMake buildClient}"
+      "-DBUILD_SERVER=${boolToCMake buildServer}"
+      "-DENABLE_FREETYPE=1"
+      "-DENABLE_GETTEXT=1"
+      "-DENABLE_SYSTEM_JSONCPP=1"
+      "-DIRRLICHT_INCLUDE_DIR=${irrlicht}/include/irrlicht"
+    ] ++ optionals buildClient [
+      "-DOpenGL_GL_PREFERENCE=GLVND"
+    ];
+
+    NIX_CFLAGS_COMPILE = [ "-DluaL_reg=luaL_Reg" ]; # needed since luajit-2.1.0-beta3
+
+    nativeBuildInputs = [ cmake doxygen graphviz ];
+
+    buildInputs = [
+      irrlicht luajit jsoncpp gettext freetype sqlite curl bzip2 ncurses
+    ] ++ optionals buildClient [
+      libpng libjpeg libGLU_combined openal libogg libvorbis xorg.libX11 libXxf86vm
+    ] ++ optional buildServer [
+      leveldb postgresql hiredis
+    ];
+
+    postInstall = ''
+      mkdir -pv $out/share/minetest/games/minetest_game/
+      cp -rv ${sources.data}/* $out/share/minetest/games/minetest_game/
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = http://minetest.net/;
+      description = "Infinite-world block sandbox game";
+      license = licenses.lgpl21Plus;
+      platforms = platforms.linux;
+      maintainers = with maintainers; [ c0dehero fpletz ];
+    };
+  };
+
+  v4 = {
+    version = "0.4.17.1";
+    sha256 = "19sfblgh9mchkgw32n7gdvm7a8a9jxsl9cdlgmxn9bk9m939a2sg";
+    dataSha256 = "1g8iw2pya32ifljbdx6z6rpcinmzm81i9minhi2bi1d500ailn7s";
+  };
+
+  v5 = {
+    version = "5.0.1";
+    sha256 = "11i8fqjpdggqfdlx440k5758zy0nbf9phxan9r63mavc7mph88ay";
+    dataSha256 = "1hw3n7qqpasq6bivxhq01kr0d58w0gp46s0baxixp1fakd79p8a7";
+  };
+
+in {
+  minetestclient_4 = generic (v4 // { buildClient = true; buildServer = false; });
+  minetestserver_4 = generic (v4 // { buildClient = false; buildServer = true; });
+
+  minetestclient_5 = generic (v5 // { buildClient = true; buildServer = false; });
+  minetestserver_5 = generic (v5 // { buildClient = false; buildServer = true; });
+}