Mirai's Miscellaneous Misadventures

M46 / meta / guix.scm

(use-modules
	(guix packages)
	(guix build-system meson)
	((guix licenses) #:prefix license:)
	(guix utils)
	(gnu packages llvm)
	(guix gexp)
	(guix profiles)
	(gnu packages graphics)
	(gnu packages pkg-config)
	(gnu packages sdl)
)

; todo: remove when (or if) <https://github.com/mesonbuild/meson/pull/11862> is merged and lands on Guix
(use-modules (gnu packages build-tools) (guix git-download))
(define meson-wasm
	(package/inherit meson
		(source
			(origin
				(method git-fetch)
				(uri
					(git-reference
						(url "https://github.com/mesonbuild/meson")
						(commit "41eee7a7b5d633e6a89a132d172a6dc5ed8d90df")
					)
				)
				(sha256 (base32 "0sxhli4hrl62kf6g5jd9rixwcr6y622dgmlxii9l5kqjdyjvgva7"))
			)
		)
	)
)

(define mimimi
	(package
		(name "mimimi")
		(version "MXX")
		(license license:agpl3+)
		(synopsis "a platforming game")
		(description synopsis)
		(home-page #f)
		(source (local-file ".." "mimimi-source" #:recursive? #t))
		(build-system meson-build-system)
		(inputs (list minifb sdl2))
		(native-inputs (list pkg-config))
		(arguments
			'(
				#:build-type "release"
				#:configure-flags '("-Ddefault_library=static")
				#:phases
					(modify-phases %standard-phases
						(add-before 'configure 'patch-mimimi
							(lambda _
								(if (file-exists? "meta/patches.tar")
									(invoke "tar" "--strip-components=1" "-xf" "meta/patches.tar")
								)
								(if (directory-exists? "meta/patches")
									(copy-recursively "meta/patches" ".")
								)
								(if (file-exists? "meta/patches.txt")
									(invoke "patch" "-p1" "-i" "meta/patches.txt")
								)
							)
						)
					)
			)
		)
	)
)

(define mimimi-wasm
	(package/inherit mimimi
		(name "mimimi-wasm")
		(inputs '())
		(native-inputs (list clang-toolchain lld))
		(arguments
			(substitute-keyword-arguments (package-arguments mimimi)
				((#:meson meson #f) meson-wasm)
				((#:configure-flags flags #~'()) #~'("--cross-file=meta/wasm32.txt" "-Dengines=wasm"))
				((#:phases phases #~%standard-phases)
					#~(modify-phases #$phases
						(replace 'configure
							(lambda* (#:key outputs configure-flags build-type #:allow-other-keys)
								(let*
									(
										(out (assoc-ref outputs "out"))
										(args `(,(string-append "--prefix=" out) ,(string-append "--buildtype=" build-type) ,@configure-flags "../build"))
									)
									(apply invoke "meson" "setup" args)
									(chdir "../build")
								)
							)
						)
					)
				)
			)
		)
	)
)

(packages->manifest (list mimimi mimimi-wasm))