projects/guix·blob python-team · refs

1006 lines · 40.3 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014, 2015, 2016 David Thompson <[email protected]>
3;;; Copyright © 2015 Andreas Enge <[email protected]>
4;;; Copyright © 2018 Efraim Flashner <[email protected]>
5;;; Copyright © 2015, 2019 Mark H Weaver <[email protected]>
6;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <[email protected]>
7;;; Copyright © 2019 Marius Bakke <[email protected]>
8;;; Copyright © 2019–2021 Tobias Geerinckx-Rice <[email protected]>
9;;; Copyright © 2021 Trevor Hass <[email protected]>
10;;; Copyright © 2020, 2021, 2022, 2025 Liliana Marie Prikler <[email protected]>
11;;; Copyright © 2021 Maxime Devos <[email protected]>
12;;; Copyright © 2024 Jan Wielkiewicz <[email protected]>
13;;; Copyright © 2025 Maxim Cournoyer <[email protected]>
14;;; This file is part of GNU Guix.
15;;;
16;;; GNU Guix is free software; you can redistribute it and/or modify it
17;;; under the terms of the GNU General Public License as published by
18;;; the Free Software Foundation; either version 3 of the License, or (at
19;;; your option) any later version.
20;;;
21;;; GNU Guix is distributed in the hope that it will be useful, but
22;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;;; GNU General Public License for more details.
25;;;
26;;; You should have received a copy of the GNU General Public License
27;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
28(define-module (gnu packages luanti)
29 #:use-module (gnu packages)
30 #:use-module (gnu packages audio)
31 #:use-module (gnu packages base)
32 #:use-module (gnu packages check)
33 #:use-module (gnu packages compression)
34 #:use-module (gnu packages curl)
35 #:use-module (gnu packages fontutils)
36 #:use-module (gnu packages gettext)
37 #:use-module (gnu packages gl)
38 #:use-module (gnu packages image)
39 #:use-module (gnu packages lua)
40 #:use-module (gnu packages multiprecision)
41 #:use-module (gnu packages ncurses)
42 #:use-module (gnu packages pkg-config)
43 #:use-module (gnu packages sdl)
44 #:use-module (gnu packages serialization)
45 #:use-module (gnu packages sqlite)
46 #:use-module (gnu packages xiph)
47 #:use-module (gnu packages xorg)
48 #:use-module (guix packages)
49 #:use-module (guix gexp)
50 #:use-module (guix git-download)
51 #:use-module (guix utils)
52 #:use-module (guix build-system cmake)
53 #:use-module (guix build-system copy)
54 #:use-module (guix build-system luanti)
55 #:use-module ((guix licenses) #:prefix license:))
56
57(define-public luanti
58 (package
59 (name "luanti")
60 (version "5.17.0")
61 (source
62 (origin
63 (method git-fetch)
64 (uri (git-reference
65 (url "https://github.com/luanti-org/luanti")
66 (commit version)))
67 (file-name (git-file-name name version))
68 (sha256
69 (base32 "19h95wwhhhxddn61s3g4075zd7h2hj6m38j5mfxl50g9jj4a49ry"))
70 (modules '((guix build utils)
71 (srfi srfi-26)
72 (ice-9 ftw)))
73 ;; Delete bundled libraries.
74 ;; - Keep lib/sha256 because there's no good upstream, see:
75 ;; https://github.com/openssl/openssl/blob/master/crypto/sha/sha512.c
76 ;; "SHA512 low level APIs are deprecated for public use,
77 ;; but still ok for internal use." Also asked MT devs on IRC for this.
78 ;; - tiniergltf is intended for Luanti and diverged from upstream.
79 (snippet
80 '(let ((keep '("." ".." "lstrpack" "sha256" "tiniergltf")))
81 (with-directory-excursion "lib"
82 (for-each delete-file-recursively
83 (scandir "." (negate (cut member <> keep)))))
84 ;; IrrlichtMT includes
85 (delete-file-recursively "irr/include/KHR")
86 (delete-file-recursively "irr/src/vendor")
87 (substitute* "irr/src/COpenGLCommon.h"
88 (("\"vendor/gl.h\"") "<GL/gl.h>"))
89 ;; Catch2
90 (substitute* "CMakeLists.txt"
91 (("add_subdirectory\\(lib/catch2\\)") "find_package(Catch2 3 REQUIRED)"))
92 (substitute* '("src/catch.h"
93 "src/test/test_irr_rotation.cpp"
94 "src/test/test_irr_matrix4.cpp"
95 "src/test/client/test_irr_x_mesh_loader.cpp")
96 (("catch_amalgamated.hpp") "catch2/catch_all.hpp"))))))
97 (build-system cmake-build-system)
98 (arguments
99 (list
100 #:configure-flags
101 #~(list "-DBUILD_DOCUMENTATION=OFF" ;not installed anyway
102 "-DENABLE_LTO=ON"
103 "-DENABLE_UPDATE_CHECKER=FALSE"
104 "-DINSTALL_DEVTEST=TRUE")
105 #:phases
106 #~(modify-phases %standard-phases
107 (delete 'check)
108 (add-after 'install 'check
109 (lambda* (#:key tests? #:allow-other-keys)
110 ;; Thanks to our substitutions, the tests should also run
111 ;; when invoked on the target outside of `guix build'.
112 (when tests?
113 (setenv "HOME" "/tmp")
114 (setenv "LUANTI_GAME_PATH"
115 (string-append #$output "/share/luanti/games"))
116 (invoke "../source/bin/luanti" "--run-unittests")
117 (invoke "../source/util/test_multiplayer.sh"))))
118 (add-after 'check 'move-devtest
119 (lambda _
120 (let ((source (string-append #$output "/share/luanti/games/devtest"))
121 (target (string-append #$output:devtest "/share/luanti/games/devtest")))
122 (mkdir-p (dirname target))
123 (rename-file source target)))))))
124 (native-search-paths
125 (list (search-path-specification
126 (variable "LUANTI_GAME_PATH")
127 (files '("share/luanti/games")))
128 (search-path-specification
129 (variable "LUANTI_MOD_PATH")
130 (files '("share/luanti/mods")))))
131 (native-inputs (list catch2 pkg-config))
132 (inputs (list curl
133 freetype
134 gettext-minimal
135 gmp
136 jsoncpp
137 libjpeg-turbo
138 libpng
139 libogg
140 libvorbis
141 libxi
142 luajit
143 mesa
144 ncurses
145 openal
146 sdl2
147 sqlite
148 `(,zstd "lib")))
149 (outputs '("out" "debug" "devtest"))
150 (synopsis "Voxel game engine")
151 (description
152 "Luanti is a voxel game engine that supports modding and game creation
153using its Lua modding API. It allows playing a wide range of voxel-based
154games, installing mods and texture packs. This package only provides the base
155platform, users need to install games themselves (for example,
156@code{luanti-minetest-game}), either through Guix, the built-in interface or other
157sources.")
158 (home-page "https://www.luanti.org/")
159 (license license:lgpl2.1+)
160 (properties `((output-synopsis "devtest" "Developer test game")))))
161
162(define-public luanti-server
163 (package
164 (inherit luanti)
165 (name "luanti-server")
166 (arguments
167 (substitute-keyword-arguments arguments
168 ((#:configure-flags configure-flags)
169 #~(cons* "-DBUILD_CLIENT=FALSE"
170 "-DBUILD_SERVER=TRUE"
171 #$configure-flags))
172 ((#:phases phases)
173 #~(modify-phases #$phases
174 (replace 'check
175 (lambda* (#:key tests? #:allow-other-keys)
176 (when tests?
177 (setenv "HOME" "/tmp")
178 (setenv "LUANTI_GAME_PATH"
179 (string-append (getcwd) "/../source/games"))
180 (invoke "../source/bin/luantiserver" "--run-unittests"))))))))
181 (inputs
182 (modify-inputs inputs
183 (delete "libjpeg-turbo"
184 "libpng"
185 "libogg"
186 "libvorbis"
187 "libxxf86vm"
188 "mesa"
189 "openal")))
190 (synopsis "Infinite-world block sandbox game (server)")
191 (description
192 "Server for Luanti game engine and gaming platform. Allows hosting
193Luanti games with multiplayer support. This package provides
194@command{luantiserver} to run a Luanti server.")))
195
196(define-public minetest-game
197 (let ((commit "c42e4d0c0ff9d27ff7b9b308c3cfc14098dd3a0f")
198 (revision "3"))
199 (package
200 (name "luanti-minetest-game")
201 (version (git-version "0.0.0" revision commit))
202 (source
203 (origin
204 (method git-fetch)
205 (uri (git-reference
206 (url "https://github.com/luanti-org/minetest_game")
207 (commit commit)))
208 (file-name (git-file-name name version))
209 (sha256
210 (base32 "1qakqf2wsdvzgjb311cj51m0drkn1qki7qzpajk2kh7y1d6xx6bk"))))
211 (build-system copy-build-system)
212 (arguments
213 (list
214 #:install-plan #~'(("." "/share/luanti/games/minetest_game"))))
215 (synopsis "Ex-official game for Luanti game engine")
216 (description
217 "This package provides the Minetest Game - a game for the
218Luanti game engine which used to be the official game for Luanti
219(formerly Minetest). It is currently in maintenance mode and gets no
220new features.")
221 (home-page "https://www.luanti.org/")
222 (license license:lgpl2.1+))))
223
224(define-public luanti-halon
225 ;; There is no tag for this fork; find the base luanti used for the
226 ;; base-version, and otherwise use the latest commit.
227 (let ((base-version "5.16.1")
228 (commit "1ab374d9f703edd9db12fc736b2b5fb0f79a50cd")
229 (revision "0"))
230 (package
231 (inherit luanti)
232 (name "luanti-halon")
233 (version (git-version base-version revision commit))
234 (source
235 (origin
236 (inherit (package-source luanti))
237 (uri (git-reference
238 (url "https://codeberg.org/halon/Minetest/")
239 (commit commit)))
240 (file-name (git-file-name name version))
241 (sha256
242 (base32 "1ds6m7dc1zsdrydwc1nx6mhiy3a6szryq2c2934kjp06vb3rj4cd"))))
243 (arguments
244 (substitute-keyword-arguments arguments
245 ((#:phases phases)
246 #~(modify-phases #$phases
247 (add-after 'unpack 'disable-development-build
248 (lambda _
249 ;; This triggers a test that requires git.
250 (substitute* "CMakeLists.txt"
251 (("DEVELOPMENT_BUILD TRUE")
252 "DEVELOPMENT_BUILD FALSE"))))
253 (add-after 'unpack 'disable-problematic-tests
254 (lambda _
255 ;; The chunks test fails, only with this fork (see:
256 ;; <https://codeberg.org/halon/Minetest/issues/5>).
257 (substitute* "src/unittest/test_map_settings_manager.cpp"
258 (("TEST\\(testChunks);" all)
259 (string-append "// " all)))))))))
260 (synopsis "Luanti fork with extended CSM (client-side scripting) API")
261 (description "The Halon fork provides an extended client-side
262scripting (CSM) API, used for example by the @code{mcl_localplayer} CSM that
263can be used to improve the physics of the Mineclonia game and do the
264computation locally, reducing lag. It is meant to be used with the
265@code{luanti-mineclonia-csm} game variant, which has client-side scripting
266enabled."))))
267
268(define-public (luanti-topic topic-id)
269 "Return an URL (as a string) pointing to the forum topic with
270numeric identifier TOPIC-ID on the official Luanti forums."
271 (string-append "https://forum.luanti.net/viewtopic.php?t="
272 (number->string topic-id)))
273
274(define-public luanti-moreores
275 (package
276 (name "luanti-moreores")
277 (version "2.1.0")
278 (source
279 (origin
280 (method git-fetch)
281 (uri (git-reference
282 (url "https://github.com/minetest-mods/moreores")
283 (commit (string-append "v" version))))
284 (sha256 (base32 "1chfqbc6bb27aacjc67j5l5wcdvmcsvk2rfmangipd7nwini3y34"))
285 (file-name (git-file-name name version))))
286 (build-system luanti-mod-build-system)
287 (home-page (luanti-topic 549))
288 (synopsis "Additional ore types, tools, swords, and rails for Luanti")
289 (description
290 "This Luanti mod adds new ore types to the game (mithril, silver) as well
291as swords and tools made of different materials. It also adds copper rails.")
292 (license license:zlib)
293 (properties `((upstream-name . "Calinou/moreores")))))
294
295(define-public luanti-sound-api-core
296 (package
297 (name "luanti-sound-api-core")
298 ;; No tags, no releases. The author intended to let users use it as a
299 ;; submodules for other projects.
300 ;; https://github.com/mt-mods/basic_materials/issues/4
301 (version "2022-02-27")
302 (source
303 (origin
304 (method git-fetch)
305 (uri (git-reference
306 (url "https://github.com/mt-mods/sound_api_core")
307 (commit "6956e49e775f325116f8e0c643899c089c691e1e")))
308 (sha256
309 (base32 "1ys6g2skhkksa4cx9agxhsibj5js8z4y2q1ngis9ddr38p756pcy"))
310 (file-name (git-file-name name version))
311 (snippet
312 '(begin
313 (call-with-output-file "mod.conf"
314 (lambda (port)
315 (format port "\
316name = sound_api_core")))))))
317 (build-system luanti-mod-build-system)
318 (propagated-inputs '())
319 (home-page "https://github.com/mt-mods/sound_api_core")
320 (synopsis "Core for game agnostic sounds")
321 (description
322 "This library can be used to get some specific sounds, whatever the game.")
323 (license license:expat)))
324
325(define-public luanti-basic-materials
326 (package
327 (name "luanti-basic-materials")
328 ;; Upstream uses dates as version numbers.
329 (version "2022-03-28")
330 (source
331 (origin
332 (method git-fetch)
333 (uri (git-reference
334 (url "https://github.com/mt-mods/basic_materials")
335 (commit "9d55f9916d20779ecbf93c7e95dae8adebd2079b")))
336 (sha256
337 (base32 "0nzx5mdw26mk2by14hxyvbqckgz8k67vlh2ch30skssvh4984bjw"))
338 (file-name (git-file-name name version))
339 (snippet
340 '(begin
341 (use-modules (guix build utils))
342 (substitute* "mod.conf"
343 (("optional_depends =")
344 "depends = sound_api_core
345optional_depends ="))
346 (substitute* "nodes.lua"
347 (("basic_materials.modpath \\.\\. \"/sound_api_core/init.lua\"")
348 "minetest.get_modpath(\"sound_api_core\") .. \"/init.lua\""))))))
349 (build-system luanti-mod-build-system)
350 (propagated-inputs
351 ;; basic_materials:silver_wire cannot be crafted without
352 ;; moreores:silver_ingot.
353 (list luanti-moreores luanti-sound-api-core))
354 (home-page (luanti-topic 21000))
355 (synopsis "Some \"basic\" materials and items for other Luanti mods to use")
356 (description
357 "The Luanti mod \"basic_materials\" provides a small selection of
358\"basic\" materials and items that other mods should use when possible -- things
359like steel bars and chains, wire, plastic strips and sheets, and more.")
360 (license
361 (list license:cc-by-sa4.0 license:lgpl3))
362 (properties `((upstream-name . "VanessaE/basic_materials")))))
363
364(define-public luanti-coloredwood
365 (package
366 (name "luanti-coloredwood")
367 ;; Upstream uses dates as version numbers.
368 (version "2021-04-14-1")
369 (source
370 (origin
371 (method git-fetch)
372 (uri (git-reference
373 (url "https://github.com/mt-mods/coloredwood")
374 (commit "be4df6fc889419155bed8638bbb752493e78cbd5")))
375 (sha256
376 (base32 "1swirfk6b4xfbiwv8adyw5yl2lyfpp8ymfipzq9ivyvmif8nl3ki"))
377 (file-name (git-file-name name version))))
378 (build-system luanti-mod-build-system)
379 (propagated-inputs
380 (list luanti-unifieddyes))
381 (home-page (luanti-topic 2411))
382 (synopsis "Painted wood in Luanti")
383 (description
384 "This Luanti mod provides hundreds of colours of wood and fences to
385Luanti, using Unified Dyes. If the \"moreblocks\" mod is active,
386coloured and cut wood shapes are provided as well.")
387 (license
388 ;; LGPL for code, CC-BY-SA for textures
389 (list license:cc-by-sa4.0 license:lgpl3))
390 (properties `((upstream-name . "VanessaE/coloredwood")))))
391
392(define-public luanti-ethereal
393 ;; ContentDB release 2021-07-28 is slightly ahead of the
394 ;; initial version 1.29 -- i.e., some released changes have been
395 ;; made to version 1.29 without a corresponding version bump.
396 (let ((commit "7670c1da9274901f57f6682384af2b3bae005a86")
397 (revision "0"))
398 (package
399 (name "luanti-ethereal")
400 (version (git-version "1.29" revision commit))
401 (source
402 (origin
403 (method git-fetch)
404 (uri (git-reference
405 (url "https://codeberg.org/tenplus1/ethereal")
406 (commit commit)))
407 (sha256
408 (base32 "1hal8bq4fydsip7s8rqz4vlaaqy9rhzxmryd0j2qnqm9286yjgkk"))
409 (file-name (git-file-name name version))))
410 (build-system luanti-mod-build-system)
411 (home-page (luanti-topic 14638))
412 (synopsis "The Ethereal mod adds many new biomes to Luanti")
413 (description
414 "The Ethereal Luanti mod uses the v7 map generator to add many new
415biomes to the world. It adds new trees, plants, food items, tweaks and some
416special items, intending to make an interesting adventure.")
417 ;; CC0: some textures
418 (license (list license:cc0 license:expat))
419 (properties `((upstream-name . "TenPlus1/ethereal"))))))
420
421(define-public luanti-homedecor-modpack
422 (package
423 (name "luanti-homedecor-modpack")
424 ;; Upstream doesn't tag releases, so use the release title from
425 ;; ContentDB as version.
426 (version "2022-05-18")
427 (source
428 (origin
429 (method git-fetch)
430 (uri (git-reference
431 (url "https://github.com/mt-mods/homedecor_modpack")
432 (commit "5ffdc26673169e05492141709fbb18e8fb6e5937")))
433 (sha256
434 (base32 "03pf254r3hnznklw7lf3q4rzqg0a1y4c9rjjhzssf1q7ai5pdrkn"))
435 (file-name (git-file-name name version))))
436 (build-system luanti-mod-build-system)
437 (propagated-inputs
438 (list luanti-basic-materials luanti-unifieddyes))
439 (home-page (luanti-topic 2041))
440 (synopsis "Home decor mod for Luanti")
441 (description
442 ;; TRANSLATORS: ‘homedecor’ is the name is the name of a Luanti mod
443 ;; and should not be translated.
444 "The homedecor Luanti mod provides a large seleection of items that
445might be found inside and around homes, such as sofas, chairs, tables, fences
446and a variety of other stuff.")
447 (license
448 (list license:cc-by-sa4.0 license:lgpl3))
449 (properties `((upstream-name . "VanessaE/homedecor_modpack")))))
450
451(define-public luanti-mesecons
452 ;; The release on ContentDB does not have its own version number.
453 (let ((commit "27c3c515b49af91c1dbc427f31a820722854eb24")
454 (revision "63"))
455 (package
456 (name "luanti-mesecons")
457 (version (git-version "1.2.1" revision commit))
458 (source
459 (origin
460 (method git-fetch)
461 (uri (git-reference
462 (url "https://github.com/minetest-mods/mesecons")
463 (commit commit)))
464 (sha256
465 (base32 "1l0kwjj8ns8hv6z520g6ph5swknar336dbi5qr3dfsy18ydk1j92"))
466 (file-name (git-file-name name version))))
467 (build-system luanti-mod-build-system)
468 (home-page "https://mesecons.net")
469 (synopsis
470 "Digital circuitry for Luanti, including wires, buttons and lights")
471 (description
472 "Mesecons is a mod for Luanti implementing various items related
473to digital circuitry, such as wires, buttons, lights and programmable
474controllers. Among other things, there are also pistons, solar panels,
475pressure plates and note blocks.
476
477Mesecons has a similar goal to Redstone in Minecraft, but works in its own way,
478with different rules and mechanics.")
479 ;; LGPL for code, CC-BY-SA for textures.
480 (license (list license:lgpl3 license:cc-by-sa3.0))
481 (properties `((upstream-name . "Jeija/mesecons"))))))
482
483(define-public luanti-mineclonia
484 (package
485 (name "luanti-mineclonia")
486 (version "0.123.0")
487 (source (origin
488 (method git-fetch)
489 (uri (git-reference
490 (url "https://codeberg.org/mineclonia/mineclonia")
491 (commit version)))
492 (file-name (git-file-name name version))
493 (sha256
494 (base32
495 "19a1synf6xbzp8gy7wc62m1504lbrnmr17d6f3qnla4yfq1aih2n"))))
496 (build-system copy-build-system)
497 (arguments
498 `(#:install-plan
499 '(("." "share/luanti/games/mineclonia"))))
500 (home-page "https://content.luanti.org/packages/ryvnf/mineclonia/")
501 (synopsis "Unofficial Minecraft-like game for Luanti")
502 (description
503 "Mineclonia is a stable and performant clone of Minecraft,
504released as free software. It aims to clone Minecraft as well as Luanti
505currently permits without resorting to hacks which are too heavyweight or
506complicated to maintain.")
507 (license license:gpl3+)))
508
509(define-public luanti-mineclonia-csm
510 (package/inherit luanti-mineclonia
511 (name "luanti-mineclonia-csm")
512 (arguments
513 (substitute-keyword-arguments arguments
514 ((#:phases phases '%standard-phases)
515 #~(modify-phases #$phases
516 (add-after 'unpack 'enable-csm-support
517 (lambda _
518 ;; This makes it easy to benefit from client-side
519 ;; scripting mods such as the mcl_localplayer mode that
520 ;; can be used along the luanti-halon fork.
521 (substitute* '("settingtypes.txt"
522 "mods/PLAYER/mcl_serverplayer/init.lua")
523 (("(mcl_enable_csm.*)false" _ mcl_enable_csm)
524 (string-append mcl_enable_csm "true")))))))))
525 (synopsis "Unofficial Minecraft-like game for Luanti with CSM enabled")
526 (description
527 (string-append (package-description luanti-mineclonia)
528 " This variant has CSM (client-side scripting)
529 enabled, for use with the @code{luanti-halon} fork. The CSM code makes it
530possible to replicate more closely the physics of the original Minecraft game.
531To use it, you need to add @code{enable_client_modding = true} to your
532client's @file{~/.minetest/minetest.conf} configuration file."))))
533
534(define-public luanti-voxelibre
535 (package
536 (name "luanti-voxelibre")
537 (version "0.92.1")
538 (source (origin
539 (method git-fetch)
540 (uri (git-reference
541 (url "https://git.minetest.land/VoxeLibre/VoxeLibre")
542 (commit version)))
543 (file-name (git-file-name name version))
544 (sha256
545 (base32
546 "0hn9hxbn029zxn66mqjih708064rd4cgbwrfx243nh78snzfhvl8"))))
547 (build-system copy-build-system)
548 (arguments
549 `(#:install-plan
550 '(("." "share/luanti/games/voxelibre"))))
551 (synopsis "Voxel-based sandbox game for Luanti")
552 (description
553 "VoxeLibre is a survival sandbox game for Luanti. Survive, gather,
554 hunt, mine for ores, build, explore, and do much more. Inspired by
555Minecraft, pushing beyond.")
556 (home-page "https://content.luanti.org/packages/Wuzzy/mineclone2/")
557 (license license:gpl3+)))
558
559(define-public luanti-mobs
560 (package
561 (name "luanti-mobs")
562 ;; Upstream does not tag release, so use the ContentDB release
563 ;; title instead.
564 (version "2021-12-12")
565 (source
566 (origin
567 (method git-fetch)
568 (uri (git-reference
569 (url "https://codeberg.org/tenplus1/mobs_redo")
570 (commit "6a4a02f3fbf1038c69e72aaafa52a1e7d6106da8")))
571 (sha256
572 (base32 "0vgv7jpm9v3dwq4l9jxdd5z14yq164w8kin1d05jfv3ck4hwlwvr"))
573 (file-name (git-file-name name version))))
574 (build-system luanti-mod-build-system)
575 (home-page (luanti-topic 9917))
576 (synopsis "Mob library for Luanti mods, for animals, monsters etc.")
577 (description
578 "This Luanti mod provides an API for adding mods (moving entities
579like animals and monsters), but does not include any mobs itself. To actually
580add some mobs, a mod like e.g. @code{mobs_animal} provided by the
581@code{luanti-mobs-animal} package needs to be enabled.")
582 ;; CC0: mob_swing.ogg
583 ;; CC-BY 3.0: mob_spell.ogg
584 ;; Expat: everything else
585 (license (list license:expat license:cc0 license:cc-by3.0))
586 (properties `((upstream-name . "TenPlus1/mobs")))))
587
588(define-public luanti-mobs-animal
589 (package
590 (name "luanti-mobs-animal")
591 ;; Upstream does not use version numbers, so use the release title
592 ;; from ContentDB instead;
593 (version "2021-11-14")
594 (source
595 (origin
596 (method git-fetch)
597 (uri (git-reference
598 (url "https://codeberg.org/tenplus1/mobs_animal")
599 (commit "3e15456bce7779aa0dc09a8890f7b5180c1ac771")))
600 (sha256
601 (base32 "08686mj3jh8fsziqp878jpaj5267s4n6i86dr1gnxyxbsrjraqpn"))
602 (file-name (git-file-name name version))))
603 (build-system luanti-mod-build-system)
604 (propagated-inputs
605 (list luanti-mobs))
606 (home-page "https://codeberg.org/tenplus1/mobs_animal")
607 (synopsis "Add animals to Luanti")
608 (description
609 "This Luanti mod adds various animals to Luanti, such as bees,
610bunnies, chickens, cows, kittens, rats, sheep, warthogs, penguins and pandas.")
611 ;; CC0: some textures and sounds
612 (license (list license:cc0 license:expat))
613 (properties `((upstream-name . "TenPlus1/mobs_animal")))))
614
615(define-public luanti-mobs-monster
616 (package
617 (name "luanti-mobs-monster")
618 ;; Upstream does not use version numbers, so use the release title
619 ;; from ContentDB instead;
620 (version "2022-12-10")
621 (source
622 (origin
623 (method git-fetch)
624 (uri (git-reference
625 (url "https://codeberg.org/tenplus1/mobs_monster")
626 (commit "1b197f9ae136179a764ef45824464b667ade52e6")))
627 (sha256
628 (base32 "15g8acrzvsiccxchfmgjhyf2lmkbrpdjqv3v7hmqz7xqypi8wm3h"))
629 (file-name (git-file-name name version))))
630 (build-system luanti-mod-build-system)
631 (propagated-inputs (list luanti-mobs))
632 (home-page "https://codeberg.org/tenplus1/mobs_monster")
633 (synopsis "Add monsters with Mobs Redo on luanti")
634 (description
635 "This Luanti mod adds many types of monsters to Luanti, that live on the
636surface or deep underground.")
637 (license license:expat)
638 (properties `((upstream-name . "TenPlus1/mobs_monster")))))
639
640(define-public luanti-pipeworks
641 (package
642 (name "luanti-pipeworks")
643 ;; Upstream uses dates as version numbers.
644 (version "2021-04-14-1")
645 (source
646 (origin
647 (method git-fetch)
648 (uri (git-reference
649 (url "https://github.com/mt-mods/pipeworks")
650 (commit "db6d1bd9c109e1e543b97cc3fa8a11400da23bcd")))
651 (sha256
652 (base32 "1flhcnf17dn1v86kcg47a1n4cb0lybd11ncxrkxn3wmf10ibsrm0"))
653 (file-name (git-file-name name version))))
654 (build-system luanti-mod-build-system)
655 (propagated-inputs
656 (list luanti-basic-materials))
657 (home-page (luanti-topic 2155))
658 (synopsis "Pipes, item-transport tubes and related devices for Luanti")
659 (description
660 "Pipeworks is a mod for Luanti implementing 3D pipes and tubes for
661transporting liquids and items and some related devices. Pipes and tubes can
662go horizontally or vertically. Item tubes can also be used for sorting items
663and extracting items from chests or putting items in chests. Autocrafters can
664automatically follow craft recipes to make new items and can be fed by item
665tubes. Deployers can place items in the world as a player would. Node
666breakers simulate a player punching a node.")
667 ;; CC-BY-SA for textures, LGPL for code
668 (license (list license:cc-by-sa4.0 license:lgpl3))
669 (properties `((upstream-name . "VanessaE/pipeworks")))))
670
671(define-public luanti-technic
672 (package
673 (name "luanti-technic")
674 ;; Upstream doesn't keep version numbers, so use the release
675 ;; date on ContentDB instead.
676 (version "2022-10-30")
677 (source
678 (origin
679 (method git-fetch)
680 (uri (git-reference
681 (url "https://github.com/minetest-mods/technic")
682 (commit "6a9dfec36f7265f9328fe378732417d9b57060b4")))
683 (sha256
684 (base32 "0ng1aklm02n2lbar345yf88g3alzvnh0m0s5rb2bcw2k5lib8468"))
685 (file-name (git-file-name name version))))
686 (build-system luanti-mod-build-system)
687 (propagated-inputs
688 (list luanti-pipeworks luanti-basic-materials))
689 (home-page (luanti-topic 2538))
690 (synopsis "Machinery and automation for Luanti")
691 (description
692 "This Luanti mod adds machinery and automation to Luanti.
693It adds various ores that can be processed for constructing various
694machinery, such as power generators, force field emitters, quarries
695and a workshop for repairing tools. Most machines are electrically
696powered.")
697 ;; CC BY-SA 3.0: some texture
698 ;; WTFPL: some textures
699 ;; CC BY-SA3.0: some textures
700 ;; CC BY-SA4.0: some sounds
701 (license (list license:lgpl2.1+ license:cc-by-sa3.0 license:cc-by-sa4.0
702 license:wtfpl2))
703 (properties `((upstream-name . "RealBadAngel/technic")))))
704
705(define-public luanti-throwing
706 ;; The latest release on ContentDB is ahead of the latet
707 ;; tagged commit.
708 (let ((commit "31f0cf5f868673dc82f24ddc432b45c9cd282d27")
709 (revision "0"))
710 (package
711 (name "luanti-throwing")
712 (version (git-version "1.1" revision commit))
713 (source
714 (origin
715 (method git-fetch)
716 (uri (git-reference
717 (url "https://github.com/minetest-mods/throwing")
718 (commit commit)))
719 (sha256
720 (base32 "1s5kkr6rxxv2dhbbjzv62gw1s617hnpjavw1v9fv11v3mgigdfjb"))
721 (file-name (git-file-name name version))))
722 (build-system luanti-mod-build-system)
723 (home-page (luanti-topic 16365))
724 (synopsis "API for throwing things in Luanti")
725 (description
726 "This Luanti mod provides an API for registering throwable things and
727throwing things like arrows. However, this mod does not provide an actual
728arrow and bow, but @code{luanti-throwing-arrows} does.")
729 (license license:mpl2.0)
730 (properties `((upstream-name . "Palige/throwing"))))))
731
732(define-public luanti-throwing-arrows
733 ;; There is only one tagged commit (version 1.1),
734 ;; there are no releases on ContentDB and the latest
735 ;; commit has a compatibility fix for Luanti 5.4.0-dev.
736 (let ((commit "059cc897af0aebfbd2c54ac5588f2b842f44f159")
737 (revision "0"))
738 (package
739 (name "luanti-throwing-arrows")
740 (version (git-version "1.1" revision commit))
741 (source
742 (origin
743 (method git-fetch)
744 (uri (git-reference
745 (url "https://github.com/minetest-mods/throwing_arrows")
746 (commit commit)))
747 (sha256
748 (base32 "0m2pmccpfxn878zd00pmrpga2h6gknz4f3qprck0fq94mksmwqs3"))
749 (file-name (git-file-name name version))))
750 (build-system luanti-mod-build-system)
751 (propagated-inputs
752 (list luanti-throwing))
753 (home-page (luanti-topic 16365))
754 (synopsis "Arrows and bows for Luanti")
755 (description
756 ;; TRANSLATORS: "throwing" is the name of a Luanti mod and should
757 ;; not be translated.
758 "This mod adds arrows and bows to Luanti. It is a compatible
759replacement for the throwing mod by PilzAdam that uses the throwing API.")
760 (license license:mpl2.0))))
761
762(define-public luanti-worldedit
763 (package
764 (name "luanti-worldedit")
765 (version "1.3")
766 (source
767 (origin
768 (method git-fetch)
769 (uri (git-reference
770 (url "https://github.com/Uberi/Minetest-WorldEdit")
771 (commit "2f26fb76459c587868199160b9d7b5d6d7852e50")))
772 (sha256
773 (base32 "0lsvihkixi2na1b0vmml9vwgs0g24hqqshl73ffhkzh6jsq4cagq"))
774 (file-name (git-file-name name version))))
775 (build-system luanti-mod-build-system)
776 (home-page (luanti-topic 572))
777 (synopsis "In-game world editor for Luanti")
778 (description
779 "WorldEdit is a mod for Luanti. It allows for creating various
780geometric shapes and copying regions. It can also export and import regions
781to and from the file system.")
782 (license license:agpl3)
783 (properties `((upstream-name . "sfan5/worldedit")))))
784
785(define-public luanti-unifieddyes
786 (package
787 (name "luanti-unifieddyes")
788 ;; Upstream uses dates as version numbers.
789 (version "2021-04-20-1")
790 (source
791 (origin
792 (method git-fetch)
793 (uri (git-reference
794 (url "https://github.com/mt-mods/unifieddyes")
795 (commit "ff3b2d30fa0df5c7181fdd401b989de6271c3bb3")))
796 (sha256
797 (base32 "0rba9n192xcpmxwnq7ixb6mn32gkpic247j3w4mwinrqcyscacsv"))
798 (file-name (git-file-name name version))))
799 (build-system luanti-mod-build-system)
800 (propagated-inputs
801 (list luanti-basic-materials))
802 (home-page (luanti-topic 2178))
803 (synopsis
804 "Unified Dyes expands the standard dye set of Luanti to up to 256 colours")
805 (description "The purpose of this mod originally was to supply a complete
806set of colours for Luanti mod authors to use for colourised nodes or
807reference in recipes. Since the advent of the default dyes mod in the standard
808Luanti game, this mod has become an extension of the default mod an a library
809for general colour handling.")
810 (license license:gpl2+)
811 (properties `((upstream-name . "VanessaE/unifieddyes")))))
812
813(define-public luanti-unified-inventory
814 (package
815 (name "luanti-unified-inventory")
816 ;; Upstream doesn't keep version numbers, so use the release title
817 ;; on ContentDB instead.
818 (version "2021-12-26")
819 (source
820 (origin
821 (method git-fetch)
822 (uri (git-reference
823 (url "https://github.com/minetest-mods/unified_inventory")
824 (commit "d6688872c84417d2f61d6f5e607aea39d78920aa")))
825 (sha256
826 (base32 "1rlw96s2yyxdbz0h9byayyx9nsbqdr4ric91w0k3dkjr71aj8a3b"))
827 (file-name (git-file-name name version))))
828 (build-system luanti-mod-build-system)
829 (home-page (luanti-topic 12767))
830 (synopsis "Replace the default inventory in Luanti and add a crafting guide")
831 (description
832 "The Unified Inventory Luanti mod relaces the default survival an
833creative inventory. It includes a node, item and tool browser, a crafting
834guide, a trash and refill slot for creative mode, bags and waypoints for keeping
835track of important locations.")
836 ;; CC-BY: some textures and icons
837 ;; CC-BY-SA: some textures and icons
838 ;; LGLPL2.1+: code and some textures
839 ;; GPL2+: some textures
840 ;; GPL3: bags.lua
841 ;; GFDL: some icons
842 ;; public domain, CC0: some icons
843 (license (list license:gpl3 license:gpl2+ license:lgpl2.1+ license:cc-by3.0
844 license:cc-by4.0 license:cc-by-sa3.0 license:public-domain
845 license:cc0 license:fdl1.2+))
846 (properties `((upstream-name . "RealBadAngel/unified_inventory")))))
847
848(define-public luanti-advtrains
849 (package
850 (name "luanti-advtrains")
851 (version "2.4.1")
852 (source
853 (origin
854 (method git-fetch)
855 (uri (git-reference
856 (url "https://git.bananach.space/advtrains.git")
857 (commit (string-append "release-" version))))
858 (sha256
859 (base32 "1q2jj8181pjgsakl28xadv0z4sszq1lb5rpgj070wr0px6mp447p"))
860 (file-name (git-file-name name version))))
861 (build-system luanti-mod-build-system)
862 (home-page "https://advtrains.de/")
863 (synopsis "Adds good-looking, realistic trains with realistic rails")
864 (description
865 "This mod features realistic trains and various equipment for railways,
866with a focus on automated train operation. This package contains no actual
867trains, please use @code{luanti-basic-trains}.
868
869Main features:
870
871@itemize
872@item
873almost-realistic tracks with actual curves and switches;
874@item
875railway signals, controllable by various means;
876@item
877ATC: simple, command-like automatic train control;
878@item
879LuaATC: Powerful Lua-scripted automatic train operation (requires some
880programming knowledge);
881@item
882an interlocking system, featuring track sections, routes and automatic
883stopping before signals.
884@end itemize")
885 (license (list license:cc-by-sa3.0 license:agpl3+))
886 (properties `((upstream-name . "orwell/advtrains")))))
887
888(define-public luanti-basic-trains
889 (package
890 (name "luanti-basic-trains")
891 (version "1.0.1")
892 (source
893 (origin
894 (method git-fetch)
895 (uri (git-reference
896 (url "http://git.bananach.space/basic_trains.git/")
897 (commit
898 "d44c410f7c2a7202ee68b66fc50febae89e0c5dc")))
899 (sha256
900 (base32
901 "0vvzndj48kgdz2bfgivfm217sbmc2lmxpp2mispcy7byn4i26prx"))
902 (file-name (git-file-name name version))))
903 (build-system luanti-mod-build-system)
904 (propagated-inputs
905 (list luanti-advtrains))
906 (home-page
907 "http://advtrains.de/wiki/doku.php?id=usage:trains:basic_trains")
908 (synopsis "Collection of basic trains for the Advanced Trains mod")
909 (description
910 "This modpack contains the trains which were the ``default'' trains in
911advtrains up to version 2.2.1.")
912 (license (list license:cc-by-sa3.0 license:agpl3+))
913 (properties `((upstream-name . "orwell/basic_trains")))))
914
915(define-public luanti-chatcmdbuilder
916 ;; The last tag is old and has issues.
917 (let ((commit "be3906e1fbd21f5c3149309c831b1a92769d3f93")
918 (revision "0"))
919 (package
920 (name "luanti-chatcmdbuilder")
921 (version (git-version "0.2.0" revision commit))
922 (source (origin
923 (method git-fetch)
924 (uri (git-reference
925 (url "https://github.com/rubenwardy/ChatCmdBuilder")
926 (commit commit)))
927 (file-name (git-file-name name version))
928 (sha256
929 (base32
930 "0b9jl9pb5cc0rz9vv5r1kcmzch3nkbcx6xzkwii7dc7xfz9dx895"))))
931 (build-system luanti-mod-build-system)
932 (home-page "https://content.luanti.org/packages/rubenwardy/lib_chatcmdbuilder/")
933 (synopsis "Luanti library to create complex chat commands")
934 (description "ChatCmdBuilder is a Luanti library to ease
935 creating complex chat commands with no pattern matching.")
936 (license license:expat)
937 (properties `((upstream-name . "rubenwardy/lib_chatcmdbuilder"))))))
938
939(define-public luanti-oneblock
940 (package
941 (name "luanti-oneblock")
942 (version "2022-09-01")
943 (source (origin
944 (method git-fetch)
945 (uri (git-reference
946 (url "https://github.com/NO411/oneblock")
947 (commit "3582c825137e61b3d2ae3d60b8b9746acd6dfe3d")))
948 (sha256
949 (base32
950 "1pkdrj99qqwmz7c86w2mh081ynyxhiwv2rl01xjm1wfpazx5zhdg"))
951 (file-name (git-file-name name version))))
952 (build-system luanti-mod-build-system)
953 (home-page "https://github.com/NO411/oneblock")
954 (synopsis "Build your island in the sky with random items!")
955 (description
956 "This package provides an extension of the Luanti game that lets you
957build your island in the sky. Every 30 seconds you will receive a random
958block or item from the oneblock to expand the island!")
959 (license license:gpl3+)
960 (properties `((upstream-name . "NO11/oneblock")))))
961
962(define-public luanti-whitelist
963 (package
964 (name "luanti-whitelist")
965 (version "1.2.7")
966 (source (origin
967 (method git-fetch)
968 (uri (git-reference
969 (url "https://gitlab.com/zughy-friends-minetest/whitelist")
970 (commit version)))
971 (file-name (git-file-name name version))
972 (sha256
973 (base32
974 "18nkph1iv5awri5i4rk9m14s0wrxsg1wjjf7gnznjrma5kffpzrq"))))
975 (build-system luanti-mod-build-system)
976 (propagated-inputs (list luanti-chatcmdbuilder))
977 (home-page "https://content.luanti.org/packages/Zughy/whitelist/")
978 (synopsis "Luanti mod to manage who can join a server")
979 (description "This package provides the @code{whitelist} Luanti mod,
980 which can be used to allow only specific players to join a Luanti server.")
981 ;; This should probably be agpl3+ (see:
982 ;; <https://gitlab.com/zughy-friends-minetest/whitelist/-/issues/1>).
983 (license license:agpl3)
984 (properties `((upstream-name . "Zughy/whitelist")))))
985
986(define-public luanti-wielded-light
987 (package
988 (name "luanti-wielded-light")
989 (version "2022-06-24")
990 (source (origin
991 (method git-fetch)
992 (uri (git-reference
993 (url "https://github.com/minetest-mods/wielded_light")
994 (commit "b5236562af9772dff8522fe2bda5b5f738e81b88")))
995 (sha256
996 (base32
997 "0m5rf8wkc9iq04xppjfva9d83qmhlnx8fibdbi2d3pkwwl6p2y5c"))
998 (file-name (git-file-name name version))))
999 (build-system luanti-mod-build-system)
1000 (home-page (luanti-topic 19378))
1001 (synopsis "Adds shining for wielded and dropped items")
1002 (description
1003 "With this Luanti extension, all bright nodes lighten the player
1004environment if wielded.")
1005 (license license:gpl3+)
1006 (properties `((upstream-name . "bell07/wielded_light")))))