Subject: [PATCH] gnu: Add minetest-server.
From: Tristan Cottam <[email-masked]>
To: [email-masked]
Cc: Tristan Cottam <[email-masked]>
Date: Wed, 15 Nov 2023 12:53:01 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

* gnu/packages/minetest.scm (minetest-server): New variable.

Change-Id: I1125888b2944acc4063a19db4c602d33286a7e14
---

This package is a variant of minetest, with modified arguments and dropped
inputs.

About the inputs, I'm having a hard time understanding why certain of them
(i.e. pkg-config, coreutils, libxxf86vm, and ncurses) are specified for
minetest in the first place; the docs make no mention of them, and the package
builds fine without them.

 gnu/packages/minetest.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/minetest.scm b/gnu/packages/minetest.scm
index bf0df314a7..4d658f9e03 100644
--- a/gnu/packages/minetest.scm
+++ b/gnu/packages/minetest.scm
@@ -44,6 +44,7 @@ (define-module (gnu packages minetest)
   #:use-module (guix packages)
   #:use-module (guix gexp)
   #:use-module (guix git-download)
+  #:use-module (guix utils)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system copy)
   #:use-module (guix build-system minetest)
@@ -154,6 +155,41 @@ (define-public minetest
     (home-page "https://www.minetest.net/")
     (license license:lgpl2.1+)))
 
+(define-public minetest-server
+  (package
+    (inherit minetest)
+    (name "minetest-server")
+    (arguments
+     (substitute-keyword-arguments (package-arguments minetest)
+       ((#:configure-flags configure-flags)
+        #~(cons* "-DBUILD_CLIENT=FALSE"
+                 "-DBUILD_SERVER=TRUE"
+                 #$configure-flags))
+       ((#:phases phases)
+        #~(modify-phases #$phases
+            (replace 'check
+              (lambda* (#:key tests? #:allow-other-keys)
+                (when tests?
+                  (setenv "HOME" "/tmp")
+                  (invoke "src/minetestserver" "--run-unittests"))))))))
+    (inputs
+     (modify-inputs (package-inputs minetest)
+       (delete "libjpeg-turbo"
+               "libpng"
+               "libogg"
+               "libvorbis"
+               "libxxf86vm"
+               "mesa"
+               "openal")))
+    (synopsis "Infinite-world block sandbox game (server)")
+    (description
+     "Minetest is a sandbox construction game.  Players can create and destroy
+various types of blocks in a three-dimensional open world.  This allows
+forming structures in every possible creation, on multiplayer servers or as a
+single player.  Mods and texture packs allow players to personalize the game
+in different ways.  This package provides @command{minetestserver} to run a
+Minetest server.")))
+
 (define minetest-data
   (package
     (name "minetest-data")

base-commit: bd0f2173210416e86281c1de8789e7cdab66dd57
-- 
2.41.0