about summary refs log tree commit diff
path: root/pkgs/games/minetest/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/minetest/default.nix')
-rw-r--r--pkgs/games/minetest/default.nix189
1 files changed, 92 insertions, 97 deletions
diff --git a/pkgs/games/minetest/default.nix b/pkgs/games/minetest/default.nix
index 550f088e8af0..fcea007ff598 100644
--- a/pkgs/games/minetest/default.nix
+++ b/pkgs/games/minetest/default.nix
@@ -38,106 +38,101 @@
 , Carbon
 , Cocoa
 , withTouchSupport ? false
+, buildClient ? true
+, buildServer ? true
 }:
 
-with lib;
+stdenv.mkDerivation (finalAttrs: {
+  pname = "minetest";
+  version = "5.8.0";
 
-let
-  boolToCMake = b: if b then "ON" else "OFF";
-
-  irrlichtmtInput = irrlichtmt.override { inherit withTouchSupport; };
-
-  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 {
-    pname = "minetest";
-    inherit version;
-
-    src = sources.src;
-
-    cmakeFlags = [
-      "-G Ninja"
-      "-DBUILD_CLIENT=${boolToCMake buildClient}"
-      "-DBUILD_SERVER=${boolToCMake buildServer}"
-      "-DENABLE_GETTEXT=1"
-      "-DENABLE_SPATIAL=1"
-      "-DENABLE_SYSTEM_JSONCPP=1"
-
-      # Remove when https://github.com/NixOS/nixpkgs/issues/144170 is fixed
-      "-DCMAKE_INSTALL_BINDIR=bin"
-      "-DCMAKE_INSTALL_DATADIR=share"
-      "-DCMAKE_INSTALL_DOCDIR=share/doc"
-      "-DCMAKE_INSTALL_DOCDIR=share/doc"
-      "-DCMAKE_INSTALL_MANDIR=share/man"
-      "-DCMAKE_INSTALL_LOCALEDIR=share/locale"
-
-    ] ++ optionals buildServer [
-      "-DENABLE_PROMETHEUS=1"
-    ] ++ optionals withTouchSupport [
-      "-DENABLE_TOUCH=TRUE"
-    ];
-
-    env.NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
-
-    nativeBuildInputs = [ cmake doxygen graphviz ninja ];
-
-    buildInputs = [
-      irrlichtmtInput jsoncpp gettext freetype sqlite curl bzip2 ncurses
-      gmp libspatialindex
-    ] ++ [ (if lib.meta.availableOn stdenv.hostPlatform luajit then luajit else lua5_1) ] ++ [
-    ] ++ optionals stdenv.isDarwin [
-      libiconv OpenGL OpenAL Carbon Cocoa
-    ] ++ optionals buildClient [
-      libpng libjpeg libGLU openal libogg libvorbis xorg.libX11
-    ] ++ 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 ''
-      mkdir -pv $out/share/minetest/games/minetest_game/
-      cp -rv ${sources.data}/* $out/share/minetest/games/minetest_game/
-      patchShebangs $out
-    '' + lib.optionalString stdenv.isDarwin ''
-      mkdir -p $out/Applications
-      mv $out/minetest.app $out/Applications
-    '';
-
-    meta = with lib; {
-      homepage = "http://minetest.net/";
-      description = "Infinite-world block sandbox game";
-      license = licenses.lgpl21Plus;
-      platforms = platforms.linux ++ platforms.darwin;
-      maintainers = with maintainers; [ pyrolagus fpletz fgaz ];
-    };
+  src = fetchFromGitHub {
+    owner = "minetest";
+    repo = "minetest";
+    rev = finalAttrs.version;
+    hash = "sha256-Oct8nQORSH8PjYs+gHU9QrKObMfapjAlGvycj+AJnOs=";
   };
 
-  v5 = {
-    version = "5.7.0";
-    sha256 = "sha256-9AL6gTmy05yTeYfCq3EMK4gqpBWdHwvJ5Flpzj8hFAE=";
-    dataSha256 = "sha256-wWgeO8513N5jQdWvZrq357fPpAU5ik06mgZraWCQawo=";
+  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 ];
   };
-
-  mkClient = version: generic (version // { buildClient = true; buildServer = false; });
-  mkServer = version: generic (version // { buildClient = false; buildServer = true; });
-in {
-  minetestclient_5 = mkClient v5;
-  minetestserver_5 = mkServer v5;
-}
+})