gnu: r-go-db: Update to 3.5.0.
[jackhill/guix/guix.git] / gnu / packages / game-development.scm
CommitLineData
6cb89466
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 Tomáš Čech <sleep_walker@suse.cz>
f586c877 3;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
c24fff61 4;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
0f6139b1 5;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
68c6110c 6;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org>
82654d95 7;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
3c8ba11a 8;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
19d311b4 9;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
a812aff9 10;;; Copyright © 2016, 2017 Julian Graham <joolean@gmail.com>
167f0e82 11;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
42d0d13d 12;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
194b4e7d 13;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
3c399e9b 14;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
6cb89466
15;;;
16;;; This file is part of GNU Guix.
17;;;
18;;; GNU Guix is free software; you can redistribute it and/or modify it
19;;; under the terms of the GNU General Public License as published by
20;;; the Free Software Foundation; either version 3 of the License, or (at
21;;; your option) any later version.
22;;;
23;;; GNU Guix is distributed in the hope that it will be useful, but
24;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26;;; GNU General Public License for more details.
27;;;
28;;; You should have received a copy of the GNU General Public License
29;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
31(define-module (gnu packages game-development)
b0910aad 32 #:use-module ((guix licenses) #:prefix license:)
6cb89466
33 #:use-module (guix packages)
34 #:use-module (guix download)
2a068aec 35 #:use-module (guix git-download)
be4d26f5 36 #:use-module (guix utils)
6cb89466 37 #:use-module (guix build-system cmake)
b0910aad 38 #:use-module (guix build-system gnu)
4bc37bf0 39 #:use-module (guix build-system python)
b0910aad 40 #:use-module (gnu packages)
c608fe8c 41 #:use-module (gnu packages autotools)
94a66dd9 42 #:use-module (gnu packages boost)
2a068aec 43 #:use-module (gnu packages curl)
c24fff61 44 #:use-module (gnu packages databases)
99828fa7 45 #:use-module (gnu packages documentation)
42d0d13d 46 #:use-module (gnu packages fonts)
d2cc38b7 47 #:use-module (gnu packages fontutils)
324b0040 48 #:use-module (gnu packages freedesktop)
d2cc38b7 49 #:use-module (gnu packages fribidi)
c24fff61
JG
50 #:use-module (gnu packages glib)
51 #:use-module (gnu packages gnunet)
42d0d13d
MR
52 #:use-module (gnu packages graphics)
53 #:use-module (gnu packages graphviz)
c24fff61 54 #:use-module (gnu packages guile)
c608fe8c 55 #:use-module (gnu packages m4)
c24fff61 56 #:use-module (gnu packages multiprecision)
4bc37bf0 57 #:use-module (gnu packages music)
c24fff61 58 #:use-module (gnu packages ncurses)
4bc37bf0 59 #:use-module (gnu packages python)
b0910aad 60 #:use-module (gnu packages qt)
4bc37bf0 61 #:use-module (gnu packages video)
5809ffcc 62 #:use-module (gnu packages compression)
5809ffcc
DT
63 #:use-module (gnu packages gl)
64 #:use-module (gnu packages linux)
65 #:use-module (gnu packages xorg)
2a068aec 66 #:use-module (gnu packages xdisorg)
5809ffcc
DT
67 #:use-module (gnu packages fontutils)
68 #:use-module (gnu packages image)
69 #:use-module (gnu packages audio)
d620ea88
DT
70 #:use-module (gnu packages pulseaudio)
71 #:use-module (gnu packages gnome)
72 #:use-module (gnu packages gtk)
73 #:use-module (gnu packages sdl)
240f2785 74 #:use-module (gnu packages pkg-config)
83a4a70b
DT
75 #:use-module (gnu packages xiph)
76 #:use-module (gnu packages lua)
2a068aec 77 #:use-module (gnu packages mp3)
194b4e7d
PM
78 #:use-module (gnu packages xml)
79 #:use-module (gnu packages tls))
6cb89466
80
81(define-public bullet
82 (package
83 (name "bullet")
fd22791e 84 (version "2.86.1")
6cb89466
85 (source (origin
86 (method url-fetch)
937bc2d1
EF
87 (uri (string-append "https://github.com/bulletphysics/bullet3/"
88 "archive/" version ".tar.gz"))
89 (file-name (string-append name "-" version ".tar.gz"))
6cb89466
90 (sha256
91 (base32
fd22791e 92 "0nghzcl84p8di215p7xj0gy1hyy072hw2xk9cnmav9hv6bjb4n60"))))
6cb89466 93 (build-system cmake-build-system)
937bc2d1
EF
94 (arguments
95 '(#:configure-flags (list (string-append
96 "-DBUILD_SHARED_LIBS=ON "
97 "-DCMAKE_CXX_FLAGS=-fPIC "
98 (or (getenv "CXXFLAGS") "")))))
99 (inputs
100 `(("glu" ,glu)
101 ("libx11" ,libx11)
102 ("mesa" ,mesa)))
6cb89466
103 (home-page "http://bulletphysics.org/")
104 (synopsis "3D physics engine library")
105 (description
106 "Bullet is a physics engine library usable for collision detection. It
107is used in some video games and movies.")
b0910aad
DT
108 (license license:zlib)))
109
1a0c4437
KK
110(define-public deutex
111 (package
112 (name "deutex")
f7b60fdc 113 (version "5.0.0")
1a0c4437
KK
114 (source (origin
115 (method url-fetch)
116 (uri (string-append "https://github.com/Doom-Utils/" name
f7b60fdc
KK
117 "/releases/download/v" version "/"
118 name "-" version ".tar.xz"))
1a0c4437
KK
119 (sha256
120 (base32
f7b60fdc 121 "1jvffcpq64hk3jysz4q6zi9hqkksy151ci9553h8q7wrrkbw0i9z"))))
1a0c4437 122 (build-system gnu-build-system)
f7b60fdc 123 (native-inputs `(("asciidoc" ,asciidoc)))
1a0c4437
KK
124 (home-page "https://github.com/Doom-Utils/deutex")
125 (synopsis "WAD file composer for Doom and related games")
126 (description
127 "DeuTex is a wad composer for Doom, Heretic, Hexen and Strife. It can be
128used to extract the lumps of a wad and save them as individual files.
129Conversely, it can also build a wad from separate files. When extracting a
130lump to a file, it does not just copy the raw data, it converts it to an
131appropriate format (such as PPM for graphics, Sun audio for samples, etc.).
132Conversely, when it reads files for inclusion in pwads, it does the necessary
133conversions (for example, from PPM to Doom picture format). In addition,
134DeuTex has functions such as merging wads, etc.")
135 (license license:gpl2+)))
136
94a66dd9
KK
137(define-public grfcodec
138 (package
139 (name "grfcodec")
140 (version "6.0.6")
141 (source (origin
142 (method url-fetch)
143 (uri (string-append "http://binaries.openttd.org/extra/"
144 name "/" version "/" name "-" version
145 "-source.tar.xz"))
146 (sha256
147 (base32
148 "08admgnpqcsifpicbm56apgv360fxapqpbbsp10qyk8i22w1ivsk"))))
149 (build-system gnu-build-system)
150 (arguments
151 '(#:tests? #f ; no check target
152 #:phases
153 (modify-phases %standard-phases
154 (delete 'configure) ; no configure script
155 (replace 'install ; no install target
156 (lambda* (#:key outputs #:allow-other-keys)
157 (let* ((out (assoc-ref outputs "out"))
158 (bin (string-append out "/bin"))
159 (doc (string-append out "/share/doc"))
160 (man (string-append out "/share/man/man1")))
161 (for-each (lambda (file)
162 (install-file file bin))
163 '("grfcodec" "grfid" "grfstrip" "nforenum"))
164 (install-file "COPYING" doc)
165 (with-directory-excursion "docs"
166 (for-each (lambda (file)
167 (install-file (string-append file ".txt") doc))
168 '("auto_correct" "commands" "grf" "grfcodec" "grftut"
169 "readme" "readme.rpn"))
170 (for-each (lambda (file)
171 (install-file file man))
172 (find-files "." "\\.1"))))
173 #t)))))
174 (inputs
175 `(("boost" ,boost)
176 ("libpng" ,libpng)
177 ("zlib" ,zlib)))
178 (synopsis "GRF development tools")
179 (description
3d77785a 180 "The @dfn{Graphics Resource File} (GRF) development tools are a set of
94a66dd9
KK
181tools for developing (New)GRFs. It includes a number of smaller programs, each
182with a specific task:
183@enumerate
184@item @code{grfcodec} decodes and encodes GRF files for OpenTTD.
185@item @code{grfid} extracts the so-called \"GRF ID\" from a GRF.
186@item @code{grfstrip} strips all sprites from a GRF.
187@item @code{nforenum} checks NFO code for errors, making corrections when
188necessary.
189@end enumerate")
190 (home-page "http://dev.openttdcoop.org/projects/grfcodec")
191 ;; GRFCodec, GRFID, and GRFStrip are exclusively under the GPL2.
192 ;; NFORenum is under the GPL2+.
193 ;; The MD5 implementation contained in GRFID is under the zlib license.
194 (license (list license:gpl2 license:gpl2+ license:zlib))))
195
3c399e9b
AI
196(define-public catcodec
197 (package
198 (name "catcodec")
199 (version "1.0.5")
200 (source
201 (origin
202 (method url-fetch)
203 (uri (string-append "https://binaries.openttd.org/extra/catcodec/"
204 version "/catcodec-" version "-source.tar.xz"))
205 (sha256
206 (base32
207 "1qg0c2i4p29sxj0q6qp2jynlrzm5pphz2xhcjqlxa69ycrnlxzs7"))))
208 (build-system gnu-build-system)
209 (arguments
210 `(#:tests? #f ; no tests
211 #:make-flags (list (string-append "prefix=" %output))
212 #:phases (modify-phases %standard-phases
213 (delete 'configure))))
214 (home-page "http://dev.openttdcoop.org/projects/catcodec")
215 (synopsis "Encode/decode OpenTTD sounds")
216 (description "catcodec encodes and decodes sounds for OpenTTD. These
217sounds are not much more than some metadata (description and filename) and raw
218PCM data.")
219 (license license:gpl2)))
220
c24fff61
JG
221(define-public gzochi
222 (package
223 (name "gzochi")
a812aff9 224 (version "0.11.1")
c24fff61
JG
225 (source (origin
226 (method url-fetch)
227 (uri (string-append "mirror://savannah/gzochi/gzochi-"
228 version ".tar.gz"))
229 (sha256
230 (base32
a812aff9 231 "13j1m92zhxwkaaja3lg5x0h0b28mrrawdzk9d3hd19031akfxwb3"))))
c24fff61 232 (build-system gnu-build-system)
c24fff61
JG
233 (native-inputs `(("pkgconfig" ,pkg-config)))
234 (inputs `(("bdb" ,bdb)
235 ("glib" ,glib)
c24fff61
JG
236 ("guile" ,guile-2.0)
237 ("libmicrohttpd" ,libmicrohttpd)
238 ("ncurses" ,ncurses)
239 ("sdl" ,sdl)
240 ("zlib" ,zlib)))
241 (home-page "http://www.nongnu.org/gzochi/")
242 (synopsis "Scalable middleware for multiplayer games")
243 (description
244 "gzochi is a framework for developing massively multiplayer online games.
245A server container provides services to deployed games, which are written in
246Guile Scheme, that abstract and simplify some of the most challenging and
247error-prone aspects of online game development: Concurrency, data persistence,
248and network communications. A very thin client library can be embedded to
249provide connectivity for client applications written in any language.")
250 (license license:gpl3+)))
251
7357fcf2
KK
252(define-public nml
253 (package
254 (name "nml")
255 (version "0.4.4")
256 (source
257 (origin
258 (method url-fetch)
259 (uri (string-append "http://bundles.openttdcoop.org/nml/releases/"
260 version "/nml-" version ".tar.gz"))
261 (sha256
262 (base32
263 "0wk9ls5qyjwkra54rkj1gg94xbwzi7b84a5fh1ma1q7pbimi8rmg"))))
264 (build-system python-build-system)
265 (propagated-inputs
266 `(("python-pillow" ,python-pillow)
267 ("python-ply" ,python-ply)))
268 (home-page "http://dev.openttdcoop.org/projects/nml")
269 (synopsis "NML compiler")
270 (description
a7cbe727 271 "@dfn{NewGRF Meta Language} (NML) is a python-based compiler, capable of
7357fcf2
KK
272compiling NML files (along with their associated language, sound and graphic
273files) into @file{.grf} and/or @file{.nfo} files.")
274 (license license:gpl2+)))
275
45f8e7f7
KK
276(define-public python-sge-pygame
277 (package
278 (name "python-sge-pygame")
b1d1a10c 279 (version "1.5.1")
45f8e7f7
KK
280 (source
281 (origin
282 (method url-fetch)
7f652029
KK
283 (uri (string-append "mirror://savannah/stellarengine/"
284 (version-major+minor version) "/sge-pygame-"
285 version ".tar.gz"))
286 (file-name (string-append name "-" version ".tar.gz"))
45f8e7f7
KK
287 (sha256
288 (base32
b1d1a10c 289 "1rl3xjzh78sl0sq3xl8rl7cgp9v9v3h7s2pfwn7nj1vrmffzkcpd"))))
45f8e7f7
KK
290 (build-system python-build-system)
291 (propagated-inputs
292 `(("python-pygame" ,python-pygame)
81353514
KK
293 ("python-six" ,python-six)
294 ("python-uniseg" ,python-uniseg)))
45f8e7f7
KK
295 (home-page "http://stellarengine.nongnu.org")
296 (synopsis "2D game engine for Python")
297 (description
298 "The SGE Game Engine (\"SGE\", pronounced like \"Sage\") is a
299general-purpose 2D game engine. It takes care of several details fro you so
300you can focus on the game itself. This makes more rapid game development
301possible, and it also makes the SGE easy to learn.")
302 (license license:lgpl3+)))
303
304(define-public python2-sge-pygame
305 (package-with-python2 python-sge-pygame))
306
1b775fd1
KK
307(define-public python-tmx
308 (package
309 (name "python-tmx")
95c1324a 310 (version "1.10")
1b775fd1
KK
311 (source
312 (origin
313 (method url-fetch)
be4d26f5
KK
314 (uri (string-append "mirror://savannah/python-tmx/"
315 (version-major+minor version) "/tmx-"
1b775fd1
KK
316 version ".tar.gz"))
317 (sha256
318 (base32
95c1324a 319 "073q0prg1nzlkga2b45vhscz374206qh4x68ccg00mxxwagn64z0"))))
1b775fd1
KK
320 (build-system python-build-system)
321 (propagated-inputs
322 `(("python-six" ,python-six)))
323 (home-page "http://python-tmx.nongnu.org")
324 (synopsis "Python library for the @code{Tiled} TMX format")
325 (description
326 "Python TMX reads and writes the @code{Tiled} TMX format in a simple way.
327This is useful for map editors or generic level editors, and it's also useful
328for using a map editor or generic level editor like Tiled to edit your game's
329levels.")
330 (license (list license:asl2.0
331 ;; Documentation (only available in the source tarball) is
332 ;; under the CC0 license.
333 license:cc0))))
334
335(define-public python2-tmx
336 (let ((python2-tmx (package-with-python2 python-tmx)))
337 (package
338 (inherit python2-tmx)
339 (propagated-inputs
340 `(("python2-pathlib" ,python2-pathlib)
341 ,@(package-propagated-inputs python2-tmx))))))
342
e99039b5
KK
343(define-public python-xsge
344 (package
345 (name "python-xsge")
cde208da 346 (version "2017.06.09")
e99039b5
KK
347 (source (origin
348 (method url-fetch)
795f3a00 349 (uri (string-append "mirror://savannah/xsge/xsge/xsge-"
e99039b5
KK
350 version ".tar.gz"))
351 (sha256
352 (base32
cde208da 353 "1vy7c2y7ihvmggs93zgfv2h3049s384wid8a5snzrrba8bhbb89p"))))
e99039b5
KK
354 (build-system python-build-system)
355 (arguments
356 '(#:phases
357 (modify-phases %standard-phases
358 ;; xSGE's setup.py script does not support one of the Python build
359 ;; system's default flags, "--single-version-externally-managed".
360 (replace 'install
361 (lambda* (#:key outputs #:allow-other-keys)
362 (zero?
363 (system* "python" "setup.py" "install"
364 (string-append "--prefix=" (assoc-ref outputs "out"))
365 "--root=/")))))
366 #:tests? #f)) ; no check target
367 (propagated-inputs
368 `(("python-sge-pygame" ,python-sge-pygame)
369 ("python-pygame" ,python-pygame)
370 ("python-six" ,python-six)
371 ("python-tmx" ,python-tmx)))
372 (home-page "http://xsge.nongnu.org")
373 (synopsis "Extensions for the SGE Game Engine")
374 (description
375 "xSGE is a collection of modules that make doing certain tasks with the SGE
376Game Engine easier. In addition to SGE's conveniences, the user has access to a
377GUI toolkit, lighting and physics frameworks and @code{Tiled} TMX format
378support.")
379 (license license:gpl3+)))
380
381(define-public python2-xsge
382 (package-with-python2 python-xsge))
383
b0910aad
DT
384(define-public tiled
385 (package
386 (name "tiled")
d3f0e098 387 (version "1.0.3")
b0910aad
DT
388 (source (origin
389 (method url-fetch)
390 (uri (string-append "https://github.com/bjorn/tiled/archive/v"
391 version ".tar.gz"))
f586c877 392 (file-name (string-append name "-" version ".tar.gz"))
b0910aad
DT
393 (sha256
394 (base32
d3f0e098 395 "1qj7l34y5zv2iazmwbix8wdpp88zv7fswbc4arqpp1wak2yna1ix"))))
b0910aad 396 (build-system gnu-build-system)
864cc7ef
RW
397 (inputs
398 `(("qtbase" ,qtbase)
399 ("qtsvg" ,qtsvg)
400 ("zlib" ,zlib)))
401 (native-inputs
402 `(("qttools" ,qttools)))
b0910aad
DT
403 (arguments
404 '(#:phases
d06fc008
EF
405 (modify-phases %standard-phases
406 (replace 'configure
864cc7ef
RW
407 (lambda* (#:key inputs outputs #:allow-other-keys)
408 (substitute* "translations/translations.pro"
409 (("LRELEASE =.*")
410 (string-append "LRELEASE = "
411 (assoc-ref inputs "qttools")
412 "/bin/lrelease\n")))
d06fc008
EF
413 (let ((out (assoc-ref outputs "out")))
414 (system* "qmake"
415 (string-append "PREFIX=" out))))))))
b0910aad
DT
416 (home-page "http://www.mapeditor.org/")
417 (synopsis "Tile map editor")
418 (description
419 "Tiled is a general purpose tile map editor. It is meant to be used for
420editing maps of any tile-based game, be it an RPG, a platformer or a Breakout
421clone.")
422
423 ;; As noted in 'COPYING', part of it is under GPLv2+, while the rest is
424 ;; under BSD-2.
425 (license license:gpl2+)))
5809ffcc
DT
426
427(define-public sfml
428 (package
429 (name "sfml")
7d1b5022 430 (version "2.3.2")
5809ffcc
DT
431 (source (origin
432 (method url-fetch)
7d1b5022
RW
433 ;; Do not fetch the archives from
434 ;; http://mirror0.sfml-dev.org/files/ because files there seem
435 ;; to be changed in place.
436 (uri (string-append "https://github.com/SFML/SFML/archive/"
437 version ".tar.gz"))
438 (file-name (string-append name "-" version ".tar.gz"))
5809ffcc
DT
439 (sha256
440 (base32
7d1b5022 441 "0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm"))))
5809ffcc
DT
442 (build-system cmake-build-system)
443 (arguments
a6e25a50
RW
444 '(#:configure-flags
445 (list "-DSFML_INSTALL_PKGCONFIG_FILES=TRUE")
446 #:tests? #f)) ; no tests
5809ffcc
DT
447 (inputs
448 `(("mesa" ,mesa)
449 ("glew" ,glew)
240f2785
RW
450 ("flac" ,flac)
451 ("libvorbis" ,libvorbis)
5809ffcc 452 ("libx11" ,libx11)
240f2785 453 ("xcb-util-image" ,xcb-util-image)
5809ffcc
DT
454 ("libxrandr" ,libxrandr)
455 ("eudev" ,eudev)
456 ("freetype" ,freetype)
457 ("libjpeg" ,libjpeg)
458 ("libsndfile" ,libsndfile)
459 ("openal" ,openal)))
167f0e82 460 (home-page "https://www.sfml-dev.org")
5809ffcc
DT
461 (synopsis "Simple and Fast Multimedia Library")
462 (description
463 "SFML provides a simple interface to the various computer components,
464to ease the development of games and multimedia applications. It is composed
465of five modules: system, window, graphics, audio and network.")
466 (license license:zlib)))
d620ea88
DT
467
468(define-public sfxr
469 (package
470 (name "sfxr")
471 (version "1.2.1")
472 (source (origin
473 (method url-fetch)
474 (uri (string-append "http://www.drpetter.se/files/sfxr-sdl-1.2.1.tar.gz"))
475 (sha256
476 (base32
477 "0dfqgid6wzzyyhc0ha94prxax59wx79hqr25r6if6by9cj4vx4ya"))))
478 (build-system gnu-build-system)
479 (arguments
480 `(#:phases (modify-phases %standard-phases
481 (delete 'configure) ; no configure script
482 (add-before 'build 'patch-makefile
483 (lambda* (#:key outputs #:allow-other-keys)
484 (let ((out (assoc-ref outputs "out")))
485 (substitute* "Makefile"
486 (("\\$\\(DESTDIR\\)/usr") out))
487 (substitute* "main.cpp"
488 (("/usr/share")
489 (string-append out "/share")))
490 #t))))
491 #:tests? #f)) ; no tests
492 (native-inputs
493 `(("pkg-config" ,pkg-config)
494 ("desktop-file-utils" ,desktop-file-utils)))
495 (inputs
496 `(("sdl" ,sdl)
497 ("gtk+" ,gtk+)))
498 (synopsis "Simple sound effect generator")
499 (description "Sfxr is a tool for quickly generating simple sound effects.
500Originally created for use in video game prototypes, it can generate random
501sounds from presets such as \"explosion\" or \"powerup\".")
502 (home-page "http://www.drpetter.se/project_sfxr.html")
503 (license license:expat)))
0f6139b1
AK
504
505(define-public physfs
506 (package
507 (name "physfs")
508 (version "2.0.3")
509 (source (origin
510 (method url-fetch)
511 (uri (string-append
167f0e82 512 "https://icculus.org/physfs/downloads/physfs-"
0f6139b1
AK
513 version ".tar.bz2"))
514 (file-name (string-append name "-" version ".tar.gz"))
515 (sha256
516 (base32
517 "0sbbyqzqhyf0g68fcvvv20n3928j0x6ik1njmhn1yigvq2bj11na"))))
518 (build-system cmake-build-system)
519 (arguments
520 '(#:tests? #f)) ; no check target
521 (inputs
522 `(("zlib" ,zlib)))
523 (native-inputs
524 `(("doxygen" ,doxygen)))
167f0e82 525 (home-page "https://icculus.org/physfs")
0f6139b1
AK
526 (synopsis "File system abstraction library")
527 (description
528 "PhysicsFS is a library to provide abstract access to various archives.
529It is intended for use in video games. For security, no file writing done
530through the PhysicsFS API can leave a defined @emph{write directory}. For
531file reading, a @emph{search path} with archives and directories is defined,
532and it becomes a single, transparent hierarchical file system. So archive
533files can be accessed in the same way as you access files directly on a disk,
534and it makes it easy to ship a new archive that will override a previous
535archive on a per-file basis.")
536 (license license:zlib)))
83a4a70b
DT
537
538(define-public love
539 (package
540 (name "love")
2c1d46b2 541 (version "0.10.2")
83a4a70b
DT
542 (source (origin
543 (method url-fetch)
544 (uri (string-append "https://bitbucket.org/rude/love/downloads/"
545 "love-" version "-linux-src.tar.gz"))
546 (sha256
547 (base32
2c1d46b2 548 "11x346pw0gqad8nmkmywzx4xpcbfc3dslbrdw5x94n1i25mk0sxj"))))
83a4a70b
DT
549 (build-system gnu-build-system)
550 (native-inputs
551 `(("pkg-config" ,pkg-config)))
552 (inputs
553 `(("devil" ,devil)
554 ("freetype" ,freetype)
555 ("libmodplug" ,libmodplug)
05d48c52 556 ("libtheora" ,libtheora)
83a4a70b
DT
557 ("libvorbis" ,libvorbis)
558 ("luajit" ,luajit)
559 ("mesa" ,mesa)
560 ("mpg123" ,mpg123)
561 ("openal" ,openal)
562 ("physfs" ,physfs)
563 ("sdl2" ,sdl2)
564 ("zlib" ,zlib)))
565 (synopsis "2D game framework for Lua")
566 (description "LÖVE is a framework for making 2D games in the Lua
567programming language.")
568 (home-page "https://love2d.org/")
569 (license license:zlib)))
154f6156
DT
570
571(define-public allegro-4
572 (package
573 (name "allegro")
574 (version "4.4.2")
575 (source (origin
576 (method url-fetch)
3a12e21c
EF
577 (uri (string-append "https://github.com/liballeg/allegro5/"
578 "releases/download/" version "/allegro-"
579 version ".tar.gz"))
154f6156
DT
580 (sha256
581 (base32
582 "1p0ghkmpc4kwij1z9rzxfv7adnpy4ayi0ifahlns1bdzgmbyf88v"))))
583 (build-system cmake-build-system)
584 (arguments
585 '(#:phases
586 (modify-phases %standard-phases
587 (add-after 'unpack 'patch-build-system
588 (lambda _
589 ;; Build addons as shared libraries. Trying to set ADDON_LINKAGE
590 ;; via a command line option doesn't work because it is
591 ;; unconditionally clobbered in the build script.
592 (substitute* '("CMakeLists.txt")
593 (("ADDON_LINKAGE STATIC")
594 "ADDON_LINKAGE SHARED"))
595 #t)))))
596 (inputs
597 `(("glu" ,glu)
598 ("libpng" ,libpng)
599 ("libvorbis" ,libvorbis)
600 ("mesa" ,mesa)
601 ("zlib" ,zlib)))
602 (synopsis "Game programming library")
603 (description "Allegro is a library mainly aimed at video game and
604multimedia programming. It handles common, low-level tasks such as creating
605windows, accepting user input, loading data, drawing images, playing sounds,
606etc.")
607 (home-page "http://liballeg.org")
608 (license license:giftware)))
2a068aec 609
19d311b4
RW
610(define-public allegro
611 (package
612 (name "allegro")
8d2832e3 613 (version "5.2.2.0")
19d311b4
RW
614 (source (origin
615 (method url-fetch)
3a12e21c
EF
616 (uri (string-append "https://github.com/liballeg/allegro5/releases"
617 "/download/" version "/allegro-"
618 (if (equal? "0" (string-take-right version 1))
619 (string-drop-right version 2)
620 version)
621 ".tar.gz"))
19d311b4
RW
622 (sha256
623 (base32
8d2832e3 624 "1z4lrrlmn471wb7vzbd9iw7g379vj0k964vy1s64hcvv5bhvk1g2"))))
19d311b4
RW
625 (build-system cmake-build-system)
626 (arguments `(#:tests? #f)) ; there are no tests
627 (inputs
628 ;; FIXME: Add the following optional inputs: xinput2, opensl, dumb
629 `(("flac" ,flac)
630 ("freetype" ,freetype)
631 ("glu" ,glu)
632 ("gtk" ,gtk+-2)
633 ("libjpeg" ,libjpeg)
634 ("libpng" ,libpng)
635 ("libtheora" ,libtheora)
636 ("libvorbis" ,libvorbis)
637 ("libxcursor" ,libxcursor)
638 ("libxinerama" ,libxinerama)
639 ("libxrandr" ,libxrandr)
640 ("mesa" ,mesa)
641 ("openal" ,openal)
642 ("physfs" ,physfs)
643 ("zlib" ,zlib)))
644 (native-inputs
645 `(("pkg-config" ,pkg-config)))
646 (synopsis "Game programming library")
647 (description "Allegro is a library mainly aimed at video game and
648multimedia programming. It handles common, low-level tasks such as creating
649windows, accepting user input, loading data, drawing images, playing sounds,
650etc.")
651 (home-page "http://liballeg.org")
652 (license license:bsd-3)))
653
cdf8f391
RW
654(define-public allegro-5.0
655 (package (inherit allegro)
656 (name "allegro")
657 (version "5.0.11")
658 (source (origin
659 (method url-fetch)
3a12e21c
EF
660 (uri (string-append "https://github.com/liballeg/allegro5/releases"
661 "/download/" version "/allegro-"
662 (if (equal? "0" (string-take-right version 1))
663 (string-drop-right version 2)
664 version)
665 ".tar.gz"))
cdf8f391
RW
666 (sha256
667 (base32
668 "0cd51qrh97jrr0xdmnivqgwljpmizg8pixsgvc4blqqlaz4i9zj9"))))))
669
2a068aec
DT
670(define-public aseprite
671 (package
672 (name "aseprite")
82654d95 673 (version "1.1.7") ; After 1.1.7 the source is no longer distributed under the GPL.
ff4dc16e 674 ;; TODO: Unbundle third party software.
2a068aec 675 (source (origin
ff4dc16e
MB
676 (method url-fetch/zipbomb)
677 (uri (string-append "https://github.com/aseprite/aseprite"
678 "/releases/download/v" version
679 "/Aseprite-v" version "-Source.zip"))
2a068aec
DT
680 (sha256
681 (base32
82654d95 682 "1plss4i1lfxcznv9p0pip1bkhj7ipw7jlhsh5avd6dzw079l4nvv"))))
2a068aec
DT
683 (build-system cmake-build-system)
684 (arguments
685 '(#:configure-flags
686 ;; Use shared libraries instead of building bundled source.
687 (list "-DWITH_WEBP_SUPPORT=1"
688 "-DUSE_SHARED_CURL=1"
689 "-DUSE_SHARED_GIFLIB=1"
690 "-DUSE_SHARED_JPEGLIB=1"
691 "-DUSE_SHARED_ZLIB=1"
692 "-DUSE_SHARED_LIBPNG=1"
693 "-DUSE_SHARED_LIBLOADPNG=1"
694 "-DUSE_SHARED_LIBWEBP=1"
695 "-DUSE_SHARED_TINYXML=1"
696 "-DUSE_SHARED_PIXMAN=1"
697 "-DUSE_SHARED_FREETYPE=1"
698 "-DUSE_SHARED_ALLEGRO4=1"
699 "-DENABLE_UPDATER=0" ; no auto-updates
700 (string-append "-DFREETYPE_INCLUDE_DIR="
701 (assoc-ref %build-inputs "freetype")
de1d68a2 702 "/include/freetype2"))))
2a068aec
DT
703 (native-inputs
704 `(("pkg-config" ,pkg-config)))
705 ;; TODO: Use a patched Allegro 4 that supports window resizing. This
706 ;; patched version is bundled with Aseprite, but the patches should be
707 ;; extracted and applied on top of a standalone Allegro 4 package.
708 (inputs
709 `(("allegro" ,allegro-4)
710 ("curl" ,curl)
711 ("freetype" ,freetype)
712 ("giflib" ,giflib)
713 ("libjpeg" ,libjpeg)
714 ("libpng" ,libpng)
715 ("libwebp" ,libwebp)
716 ("libx11" ,libx11)
717 ("libxext" ,libxext)
718 ("libxxf86vm" ,libxxf86vm)
719 ("pixman" ,pixman)
720 ("tinyxml" ,tinyxml)
721 ("zlib" ,zlib)))
722 (synopsis "Animated sprite editor and pixel art tool")
723 (description "Aseprite is a tool for creating 2D pixel art for video
724games. In addition to basic pixel editing features, Aseprite can assist in
725the creation of animations, tiled graphics, texture atlases, and more.")
167f0e82 726 (home-page "https://www.aseprite.org/")
2a068aec 727 (license license:gpl2+)))
966dff3b
KY
728
729(define-public qqwing
730 (package
731 (name "qqwing")
732 (version "1.3.4")
733 (source (origin
734 (method url-fetch)
735 (uri (string-append
736 "https://qqwing.com/"
737 name "-" version ".tar.gz"))
738 (sha256
739 (base32
740 "0bw0papyqjg22z6irf36gs54y8236wa37b6gyn2h1spy65n76lqp"))))
741 (build-system gnu-build-system)
742 (native-inputs
743 `(("pkg-config" ,pkg-config)))
744 (home-page "https://qqwing.com/")
745 (synopsis "Sudoku puzzle solver and generator")
746 (description
747 "QQWing is a Sudoku puzzle generator and solver.
748It offers the following features:
749@enumerate
750@item Can solve 1000 puzzles in 1 second and generate 1000 puzzles in 25 seconds.
751@item Uses logic. Uses as many solve techniques as possible when solving
752 puzzles rather than guessing.
753@item Rates puzzles. Most generators don't give an indication of the difficulty
754 of a Sudoku puzzle. QQwing does.
755@item Can print solve instructions for any puzzle.
756@item Customizable output style, including a CSV style that is easy to
757 import into a database.
758@end enumerate")
759 (license license:gpl2+)))
d2cc38b7
KK
760
761(define-public quesoglc
762 (package
763 (name "quesoglc")
764 (version "0.7.2")
765 (source (origin
766 (method url-fetch)
767 (uri (string-append "mirror://sourceforge/" name "/" version "/"
768 name "-" version "-free.tar.bz2"))
769 (sha256
770 (base32
771 "08ddhywdy2qg17m592ng3yr0p1ih96irg8wg729g75hsxxq9ipks"))))
772 (build-system gnu-build-system)
773 (native-inputs `(("pkg-config" ,pkg-config)))
774 (inputs `(("fontconfig" ,fontconfig)
775 ("freeglute" ,freeglut)
776 ("fribidi" ,fribidi)
777 ("glew" ,glew)))
778 (home-page "http://quesoglc.sourceforge.net")
779 (synopsis "Implementation of the OpenGL Character Renderer (GLC)")
780 (description
781 "The OpenGL Character Renderer (GLC) is a state machine that provides
782OpenGL programs with character rendering services via an application programming
783interface (API).")
784 (license (list license:expat license:lgpl2.1+))))
4bc37bf0
KK
785
786(define-public python-pygame
787 (package
788 (name "python-pygame")
052f75da 789 (version "1.9.3")
4bc37bf0
KK
790 (source (origin
791 (method url-fetch)
052f75da 792 (uri (pypi-uri "pygame" version))
4bc37bf0
KK
793 (sha256
794 (base32
052f75da 795 "1hlydiyygl444bq5m5g8n3jsxsgrdyxlm42ipmfbw36wkf0j243m"))))
4bc37bf0
KK
796 (build-system python-build-system)
797 (arguments
052f75da 798 `(#:tests? #f ; Tests require pygame to be installed first.
4bc37bf0
KK
799 #:phases
800 (modify-phases %standard-phases
801 ;; Set the paths to the dependencies manually because
802 ;; the configure script does not allow passing them as
803 ;; parameters. This also means we can skip the configure
804 ;; phase.
805 (add-before 'build 'set-library-paths
806 (lambda* (#:key inputs outputs #:allow-other-keys)
807 (let ((sdl-ref (assoc-ref inputs "sdl"))
808 (font-ref (assoc-ref inputs "sdl-ttf"))
809 (image-ref (assoc-ref inputs "sdl-image"))
810 (mixer-ref (assoc-ref inputs "sdl-mixer"))
811 (smpeg-ref (assoc-ref inputs "libsmpeg"))
812 (png-ref (assoc-ref inputs "libpng"))
813 (jpeg-ref (assoc-ref inputs "libjpeg"))
052f75da 814 (freetype-ref (assoc-ref inputs "freetype"))
4bc37bf0
KK
815 (v4l-ref (assoc-ref inputs "v4l-utils"))
816 (out-ref (assoc-ref outputs "out")))
817 (substitute* "Setup.in"
818 (("SDL = -I/usr/include/SDL")
819 (string-append "SDL = -I" sdl-ref "/include/SDL -I.")))
820 (substitute* "Setup.in"
821 (("FONT = -lSDL_ttf")
822 (string-append "FONT = -I" font-ref "/include/SDL -L"
823 font-ref "/lib -lSDL_ttf")))
824 (substitute* "Setup.in"
825 (("IMAGE = -lSDL_image")
826 (string-append "IMAGE = -I" image-ref "/include/SDL -L"
827 image-ref "/lib -lSDL_image")))
828 (substitute* "Setup.in"
829 (("MIXER = -lSDL_mixer")
830 (string-append "MIXER = -I" mixer-ref "/include/SDL -L"
831 mixer-ref "/lib -lSDL_mixer")))
832 (substitute* "Setup.in"
833 (("SMPEG = -lsmpeg")
834 (string-append "SMPEG = -I" smpeg-ref "/include/smpeg -L"
835 smpeg-ref "/lib -lsmpeg")))
836 (substitute* "Setup.in"
837 (("PNG = -lpng")
838 (string-append "PNG = -I" png-ref "/include -L"
839 png-ref "/lib -lpng")))
840 (substitute* "Setup.in"
841 (("JPEG = -ljpeg")
842 (string-append "JPEG = -I" jpeg-ref "/include -L"
843 jpeg-ref "/lib -ljpeg")))
052f75da
DM
844
845 (substitute* "Setup.in"
846 (("FREETYPE = -lfreetype")
847 (string-append "FREETYPE = -I" freetype-ref "/include/freetype2 -L"
848 freetype-ref "/lib -lfreetype")))
849
4bc37bf0
KK
850 (substitute* "Setup.in"
851 (("^pypm") "#pypm"))
4bc37bf0
KK
852 ;; Create a path to a header file provided by v4l-utils.
853 (system* "mkdir" "linux")
854 (system* "ln" "--symbolic"
855 (string-append v4l-ref "/include/libv4l1-videodev.h")
856 "linux/videodev.h")
857 (system* "ln" "--symbolic" "Setup.in" "Setup")))))))
4bc37bf0 858 (inputs
052f75da
DM
859 `(("freetype" ,freetype)
860 ("sdl" ,sdl)
4bc37bf0
KK
861 ("sdl-image" ,sdl-image)
862 ("sdl-mixer" ,sdl-mixer)
863 ("sdl-ttf" ,sdl-ttf)
864 ("sdl-gfx" ,sdl-gfx)
865 ("libjpeg" ,libjpeg)
866 ("libpng" ,libpng)
867 ("libX11" ,libx11)
868 ("libsmpeg" ,libsmpeg)
869 ("portmidi" ,portmidi)
870 ("v4l-utils" ,v4l-utils)))
167f0e82 871 (home-page "https://www.pygame.org")
4bc37bf0
KK
872 (synopsis "SDL wrapper for Python")
873 (description "Pygame is a set of Python modules designed for writing games.
874Pygame adds functionality on top of the excellent SDL library. This allows you
875to create fully featured games and multimedia programs in the python language.")
876 (license (list license:bsd-2
877 ;; python numeric license as listed by Debian looks like
878 ;; an Expat-style license with a warranty disclaimer for
879 ;; the U.S. government and the University of California.
880 license:expat
881 license:lgpl2.0+
882 license:lgpl2.1+
883 license:gpl3+
884 license:psfl
885 license:public-domain
886 license:lgpl2.1+))))
052f75da
DM
887
888(define-public python2-pygame
889 (package-with-python2 python-pygame))
68c6110c
DT
890
891(define-public grafx2
892 (package
893 (name "grafx2")
894 (version "2.4")
895 (source (origin
896 (method url-fetch)
897 ;; XXX: There is no URL that contains the version. :(
898 (uri "http://pulkomandy.tk/projects/GrafX2/downloads/21")
899 (sha256
900 (base32
901 "0svsy6rqmdj11b400c242i2ixihyz0hds0dgicqz6g6dcgmcl62q"))))
902 (build-system gnu-build-system)
903 (arguments
904 '(#:phases
905 (modify-phases %standard-phases
906 (delete 'configure) ; no configure script
907 (add-before 'build 'change-to-src-directory
908 (lambda _
909 (chdir "src")
910 #t)))
911 #:make-flags
912 ;; SDL header files are referenced without the preceeding "SDL/".
913 (list (string-append "CFLAGS=-I"
914 (assoc-ref %build-inputs "sdl-union")
915 "/include/SDL")
916 (string-append "prefix="
917 (assoc-ref %outputs "out")))
918 #:tests? #f)) ; no check target
919 (native-inputs
920 `(("pkg-config" ,pkg-config)))
921 (inputs
922 `(("libpng" ,libpng)
923 ("lua" ,lua-5.1)
924 ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-ttf)))))
925 (synopsis "Bitmap paint program")
926 (description "GrafX2 is a bitmap paint program inspired by the Amiga
7432d3ae 927programs Deluxe Paint and Brilliance. Specializing in 256-color drawing, it
68c6110c
DT
928includes a very large number of tools and effects that make it particularly
929suitable for pixel art, game graphics, and generally any detailed graphics
930painted with a mouse.")
931 (home-page "http://pulkomandy.tk/projects/GrafX2")
932 (license license:gpl2))) ; GPLv2 only
c608fe8c
MR
933
934(define-public ois
935 (package
936 (name "ois")
937 (version "1.3")
938 (source
939 (origin
940 ;; Development has moved to github and there are no recent tarball
941 ;; releases.
942 (method git-fetch)
943 (uri (git-reference
944 (url "https://github.com/wgois/OIS.git")
945 (commit "bb75ccc1aabc1c547195579963601ff6080ca2f2")))
946 (file-name (string-append name "-" version))
947 (sha256
948 (base32
949 "0w0pamjc3vj0jr718hysrw8x076fq6n9rd6wcb36sn2jd0lqvi98"))))
950 (build-system gnu-build-system)
951 (arguments
952 `(#:phases
953 (modify-phases %standard-phases
954 (add-after 'unpack 'bootstrap
955 (lambda _ (zero? (system* "sh" "bootstrap")))))))
956 (native-inputs
957 `(("autoconf" ,autoconf)
958 ("automake" ,automake)
959 ("libtool" ,libtool)
960 ("m4" ,m4)
961 ("pkg-config" ,pkg-config)))
962 (inputs
963 `(("libxaw" ,libxaw)))
964 (synopsis "Object Oriented Input System")
965 (description
966 "Cross Platform Object Oriented Input Lib System is a cross platform,
967simple solution for using all kinds of Input Devices (Keyboards, Mice,
968Joysticks, etc) and feedback devices (e.g. force feedback). Meant to be very
969robust and compatible with many systems and operating systems.")
970 (home-page "https://github.com/wgois/OIS")
971 (license license:zlib)))
42d0d13d
MR
972
973(define-public mygui
974 (package
975 (name "mygui")
976 (version "3.2.2")
977 (source
978 (origin
979 (method url-fetch)
980 (uri
981 (string-append "https://github.com/MyGUI/" name
982 "/archive/MyGUI" version ".tar.gz"))
983 (sha256
984 (base32
985 "13x7cydmj7gjmsg702sqjbfi53z265iv6j7binv3r6a7ibndfa0a"))))
986 (build-system cmake-build-system)
987 (arguments
988 '(#:tests? #f ; No test target
989 #:configure-flags
990 (list "-DMYGUI_INSTALL_DOCS=TRUE"
991 (string-append "-DOGRE_INCLUDE_DIR="
992 (assoc-ref %build-inputs "ogre")
993 "/include/OGRE"))))
994 (native-inputs
995 `(("boost" ,boost)
996 ("doxygen" ,doxygen)
997 ("pkg-config" ,pkg-config)))
998 (inputs
999 `(("font-dejavu" ,font-dejavu)
1000 ("freetype" ,freetype)
1001 ("graphviz" ,graphviz)
1002 ("libx11" ,libx11)
1003 ("ogre" ,ogre)
1004 ("ois" ,ois)))
1005 (synopsis "Fast, flexible and simple GUI")
1006 (description
1007 "MyGUI is a library for creating Graphical User Interfaces (GUIs) for games
1008and 3D applications. The main goals of mygui are: speed, flexibility and ease
1009of use.")
1010 (home-page "http://mygui.info/")
1011 (license license:expat)))
e9a599cd
MR
1012
1013(define-public openmw
1014 (package
1015 (name "openmw")
1016 (version "0.42.0")
1017 (source
1018 (origin
1019 (method url-fetch)
1020 (uri
1021 (string-append "https://github.com/OpenMW/openmw/archive/"
1022 name "-" version ".tar.gz"))
1023 (sha256
1024 (base32
1025 "1pla8016lpbg8cgm9kia318a860f26dmiayc72p3zl35mqrc7g7w"))))
1026 (build-system cmake-build-system)
1027 (arguments
1028 `(#:tests? #f ; No test target
1029 #:configure-flags
1030 (list "-DDESIRED_QT_VERSION=5")))
1031 (native-inputs
1032 `(("boost" ,boost)
1033 ("doxygen" ,doxygen)
1034 ("pkg-config" ,pkg-config)))
1035 (inputs
1036 `(("bullet" ,bullet)
1037 ("ffmpeg" ,ffmpeg)
1038 ("libxt" ,libxt)
1039 ("mygui" ,mygui)
1040 ("openal" ,openal)
1041 ("openscenegraph" ,openscenegraph)
1042 ("qtbase" ,qtbase)
1043 ("sdl" ,sdl2)
1044 ("unshield" ,unshield)))
5a80c15c 1045 (synopsis "Re-implementation of the RPG Morrowind engine")
e9a599cd 1046 (description
5a80c15c
RW
1047 "OpenMW is a game engine which reimplements and extends the one that runs
1048the 2002 open-world RPG Morrowind. The engine comes with its own editor,
1049called OpenMW-CS which allows the user to edit or create their own original
1050games.")
e9a599cd
MR
1051 (home-page "https://openmw.org")
1052 (license license:gpl3)))
194b4e7d
PM
1053
1054(define-public godot
1055 (package
1056 (name "godot")
1057 (version "2.1.4")
1058 (source (origin
1059 (method url-fetch)
1060 (uri
1061 (string-append "https://github.com/godotengine/godot/archive/"
1062 version "-stable.tar.gz"))
1063 (file-name (string-append name "-" version))
1064 (sha256
1065 (base32 "1mz89nafc1m7srbqvy7iagxrxmqvf5hbqi7i0lwaapkx6q0kpkq7"))))
1066 (build-system gnu-build-system)
1067 (arguments
1068 `(#:tests? #f ; There are no tests
1069 #:phases
1070 (modify-phases %standard-phases
1071 (delete 'configure)
1072 (add-after 'unpack 'scons-use-env
1073 (lambda _
1074 ;; Scons does not use the environment variables by default,
1075 ;; but this substitution makes it do so.
1076 (substitute* "SConstruct"
1077 (("env_base = Environment\\(tools=custom_tools\\)")
1078 (string-append
1079 "env_base = Environment(tools=custom_tools)\n"
1080 "env_base = Environment(ENV=os.environ)")))
1081 #t))
1082 (replace 'build
1083 (lambda _
1084 (zero? (system*
1085 "scons"
1086 "platform=x11"
1087 ;; Avoid using many of the bundled libs.
1088 ;; Note: These options can be found in the SConstruct file.
1089 "builtin_freetype=no"
1090 "builtin_glew=no"
1091 "builtin_libmpdec=no"
1092 "builtin_libogg=no"
1093 "builtin_libpng=no"
1094 "builtin_libtheora=no"
1095 "builtin_libvorbis=no"
1096 "builtin_libwebp=no"
1097 "builtin_openssl=no"
1098 "builtin_opus=no"
1099 "builtin_zlib=no"))))
1100 (replace 'install
1101 (lambda* (#:key outputs #:allow-other-keys)
1102 (let* ((out (assoc-ref outputs "out"))
1103 (bin (string-append out "/bin")))
1104 (with-directory-excursion "bin"
1105 (if (file-exists? "godot.x11.tools.64")
1106 (rename-file "godot.x11.tools.64" "godot")
1107 (rename-file "godot.x11.tools.32" "godot"))
1108 (install-file "godot" bin)))))
1109 (add-after 'install 'install-godot-desktop
1110 (lambda* (#:key outputs #:allow-other-keys)
1111 (let* ((out (assoc-ref outputs "out"))
1112 (desktop (string-append out "/share/applications"))
1113 (icon-dir (string-append out "/share/pixmaps")))
1114 (mkdir-p desktop)
1115 (mkdir-p icon-dir)
1116 (rename-file "icon.png" "godot.png")
1117 (install-file "godot.png" icon-dir)
1118 (with-output-to-file
1119 (string-append desktop "/godot.desktop")
1120 (lambda _
1121 (format #t
1122 "[Desktop Entry]~@
1123 Name=godot~@
1124 Comment=The godot game engine~@
1125 Exec=~a/bin/godot~@
1126 TryExec=~@*~a/bin/godot~@
1127 Icon=godot~@
1128 Type=Application~%"
1129 out)))
1130 #t))))))
1131 (native-inputs `(("pkg-config" ,pkg-config)
1132 ("scons" ,scons)))
1133 (inputs `(("alsa-lib" ,alsa-lib)
1134 ("freetype" ,freetype)
1135 ("glew" ,glew)
1136 ("glu" ,glu)
1137 ("libtheora" ,libtheora)
1138 ("libvorbis" ,libvorbis)
1139 ("libwebp" ,libwebp)
1140 ("libx11" ,libx11)
1141 ("libxcursor" ,libxcursor)
1142 ("libxinerama" ,libxinerama)
1143 ("libxrandr" ,libxrandr)
1144 ("mesa" ,mesa)
1145 ("openssl" ,openssl)
1146 ("opusfile" ,opusfile)
1147 ("pulseaudio" ,pulseaudio)
1148 ("python2" ,python-2)))
1149 (home-page "https://godotengine.org/")
1150 (synopsis "Advanced 2D and 3D game engine")
1151 (description
1152 "Godot is an advanced multi-platform game engine written in C++. If
1153features design tools such as a visual editor, can import 3D models and
1154provide high-quality 3D rendering, it contains an animation editor, and can be
1155scripted in a Python-like language.")
1156 (license license:expat)))