forked from mirrors/nixpkgs
273e32f1aa
Touch support requires rebuilding irrlichtmt with touch support, which upstream does not enable by default. Building Minetest with touch support also disables the regular interface, so touch support defaults to off.
103 lines
3.4 KiB
Nix
103 lines
3.4 KiB
Nix
{ lib, stdenv, fetchFromGitHub, cmake, irrlichtmt, libpng, bzip2, curl, libogg, jsoncpp
|
|
, libjpeg, libXxf86vm, libGLU, libGL, openal, libvorbis, sqlite, 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
|
|
}:
|
|
|
|
with lib;
|
|
|
|
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"
|
|
"-DIRRLICHT_INCLUDE_DIR=${irrlichtmtInput.dev}/include/irrlichtmt"
|
|
|
|
# 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 buildClient [
|
|
"-DOpenGL_GL_PREFERENCE=GLVND"
|
|
] ++ optionals buildServer [
|
|
"-DENABLE_PROMETHEUS=1"
|
|
] ++ optionals withTouchSupport [
|
|
"-DENABLE_TOUCH=TRUE"
|
|
];
|
|
|
|
NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
|
|
|
|
nativeBuildInputs = [ cmake doxygen graphviz ninja ];
|
|
|
|
buildInputs = [
|
|
irrlichtmtInput luajit jsoncpp gettext freetype sqlite curl bzip2 ncurses
|
|
gmp libspatialindex
|
|
] ++ optionals stdenv.isDarwin [
|
|
libiconv OpenGL OpenAL Carbon Cocoa
|
|
] ++ optionals buildClient [
|
|
libpng libjpeg libGLU libGL openal libogg libvorbis xorg.libX11 libXxf86vm
|
|
] ++ optionals buildServer [
|
|
leveldb postgresql hiredis prometheus-cpp
|
|
];
|
|
|
|
postInstall = ''
|
|
mkdir -pv $out/share/minetest/games/minetest_game/
|
|
cp -rv ${sources.data}/* $out/share/minetest/games/minetest_game/
|
|
'';
|
|
|
|
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 ];
|
|
# never built on Hydra
|
|
# https://hydra.nixos.org/job/nixpkgs/trunk/minetestclient_4.x86_64-darwin
|
|
# https://hydra.nixos.org/job/nixpkgs/trunk/minetestserver_4.x86_64-darwin
|
|
broken = (lib.versionOlder version "5.0.0") && stdenv.isDarwin;
|
|
};
|
|
};
|
|
|
|
v5 = {
|
|
version = "5.5.0";
|
|
sha256 = "sha256-V+ggqvZibSQrJbrtNCEkmRYHhgSKTQsdBh3c8+t6WeA=";
|
|
dataSha256 = "sha256-6ZS3EET3nm09eL0czCGadwzon35/EBfAg2KjPX3ZP/0=";
|
|
};
|
|
|
|
in {
|
|
minetestclient_5 = generic (v5 // { buildClient = true; buildServer = false; });
|
|
minetestserver_5 = generic (v5 // { buildClient = false; buildServer = true; });
|
|
}
|