;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2021 Maxime Devos ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (guix build-system minetest) #:use-module (guix build-system copy) #:use-module (guix build-system) #:export (minetest-mod-build-system)) ;; ;; Build procedure for minetest mods. This is implemented as an extension ;; of ‘copy-build-system’. ;; ;; Code: (define (guix-name->mod-name package-name) ;; The "minetest-" prefix is useless. Don't make it appear in the ;; ‘select mods’ menu when "modpack.conf" or "mod.conf" do not have ;; the "name" field set. (if (string-prefix? "minetest-" package-name) (substring package-name 9) package-name)) (define %standard-phases ;; The source code sometimes contains shell scripts which are used for ;; development but not at run time (e.g. listnodes.sh in ;; minetest-homedecor-modpack). Don't make them retain a reference ;; to bash-minimal. '(modify-phases (@ (guix build copy-build-system) %standard-phases) (delete 'patch-source-shebangs))) (define (lower-mod name . arguments) (define lower (build-system-lower copy-build-system)) (apply lower name #:install-plan `'(("." ,(string-append "share/minetest/mods/" (guix-name->mod-name name)))) #:phases %standard-phases arguments)) (define minetest-mod-build-system (build-system (name 'minetest-mod) (description "The build system for minetest mods") (lower lower-mod))) ;;; minetest.scm ends here