guix-more/more/packages/games.scm

games.scm

1
;;; GNU Guix --- Functional package management for GNU
2
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
3
;;;
4
;;; This file is part of GNU Guix.
5
;;;
6
;;; GNU Guix is free software; you can redistribute it and/or modify it
7
;;; under the terms of the GNU General Public License as published by
8
;;; the Free Software Foundation; either version 3 of the License, or (at
9
;;; your option) any later version.
10
;;;
11
;;; GNU Guix is distributed in the hope that it will be useful, but
12
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
;;; GNU General Public License for more details.
15
;;;
16
;;; You should have received a copy of the GNU General Public License
17
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
18
19
(define-module (more packages games)
20
  #:use-module (guix packages)
21
  #:use-module (guix download)
22
  #:use-module (guix git-download)
23
  #:use-module (guix build-system cmake)
24
  #:use-module (guix build-system gnu)
25
  #:use-module (guix build-system trivial)
26
  #:use-module ((guix licenses) #:prefix license:)
27
  #:use-module (gnu packages)
28
  #:use-module (gnu packages assembly)
29
  #:use-module (gnu packages audio)
30
  #:use-module (gnu packages base)
31
  #:use-module (gnu packages boost)
32
  #:use-module (gnu packages check)
33
  #:use-module (gnu packages compression)
34
  #:use-module (gnu packages curl)
35
  #:use-module (gnu packages databases)
36
  #:use-module (gnu packages documentation)
37
  #:use-module (gnu packages fontutils)
38
  #:use-module (gnu packages fribidi)
39
  #:use-module (gnu packages games)
40
  #:use-module (gnu packages gcc)
41
  #:use-module (gnu packages gl)
42
  #:use-module (gnu packages graphics)
43
  #:use-module (gnu packages gtk)
44
  #:use-module (gnu packages image)
45
  #:use-module (gnu packages lua)
46
  #:use-module (more packages lua)
47
  #:use-module (gnu packages llvm)
48
  #:use-module (gnu packages ncurses)
49
  #:use-module (gnu packages pcre)
50
  #:use-module (gnu packages pkg-config)
51
  #:use-module (gnu packages python)
52
  #:use-module (gnu packages python-xyz)
53
  #:use-module (more packages python)
54
  #:use-module (gnu packages qt)
55
  #:use-module (gnu packages sdl)
56
  #:use-module (gnu packages sqlite)
57
  #:use-module (gnu packages tbb)
58
  #:use-module (more packages tcl)
59
  #:use-module (gnu packages tls)
60
  #:use-module (gnu packages xiph)
61
  #:use-module (gnu packages xml)
62
  #:use-module (gnu packages xorg))
63
64
(define-public cegui
65
  (package
66
    (name "cegui")
67
    (version "0.8.7")
68
    (source (origin
69
              (method url-fetch)
70
              (uri (string-append
71
                     "http://prdownloads.sourceforge.net/crayzedsgui/cegui-"
72
                     version ".tar.bz2"))
73
              (sha256
74
               (base32
75
                "067562s71kfsnbp2zb2bmq8zj3jk96g5a4rcc5qc3n8nfyayhldk"))))
76
    (build-system cmake-build-system)
77
    (arguments
78
     `(#:tests? #f))
79
    (native-inputs
80
     `(("pkg-config" ,pkg-config)))
81
    (inputs
82
     `(("pcre" ,pcre)
83
       ("gl" ,mesa)
84
       ("freetype" ,freetype)
85
       ("fribidi" ,fribidi)
86
       ("glew" ,glew)
87
       ("sdl2" ,sdl2)
88
       ("irrlicht" ,irrlicht)
89
       ("ogre" ,ogre)
90
       ("epoxy" ,libepoxy)
91
       ("expat" ,expat)
92
       ("libxml2" ,libxml2)
93
       ("freeimage" ,freeimage)
94
       ("python" ,python)
95
       ("lua" ,lua-5.1)
96
       ("gtk" ,gtk+-2)
97
       ("boost" ,boost)
98
       ("minizip" ,minizip)
99
       ("tinyxml" ,tinyxml)))
100
    (home-page "http://cegui.org.uk/")
101
    (synopsis "Crazy Eddie's GUI system")
102
    (description "Crazy Eddie's GUI System is a free library providing windowing
103
and widgets for graphics APIs / engines where such functionality is not natively
104
available, or severely lacking.  The library is object-oriented, written in C++,
105
cross-platform, and targeted at game and application developers.  Additionally,
106
it offers a WYSIWYG editor for creating layouts and imagesets.")
107
    (license license:expat)))
108
109
(define-public morji
110
  (package
111
    (name "morji")
112
    (version "0.3")
113
    (source (origin
114
              (method url-fetch)
115
              (uri (string-append
116
                     "https://bardinflor.perso.aquilenet.fr/morji/morji-"
117
                     version ".tar.gz"))
118
              (sha256
119
               (base32
120
                "1icpqn7ypg4jbbn222zvgdg96x0k1nb9rbcfr5ky86ldhly1flq2"))))
121
    (build-system gnu-build-system)
122
    (arguments
123
     `(#:tests? #f; Tests don't run in our environment
124
       #:phases
125
       (modify-phases %standard-phases
126
         (delete 'configure)
127
         (delete 'build)
128
         (replace 'install
129
           (lambda* (#:key outputs #:allow-other-keys)
130
             (zero? (system* "make" "install"
131
                             (string-append "PREFIX=" (assoc-ref outputs "out")))))))))
132
    (propagated-inputs
133
     `(("ncurses" ,ncurses) ; TODO: this should probably be a propagated-input of tcllib.
134
       ("sqlite" ,sqlite)
135
       ("tcl" ,tcl-fix)
136
       ("tcllib" ,tcllib-fix)))
137
    (native-inputs
138
     `(("expect" ,expect-fix)))
139
    (home-page "https://bardinflor.perso.aquilenet.fr/morji/intro-en")
140
    (synopsis "Simple flashcard program for the terminal")
141
    (description "Morji is a simple flashcard program for the terminal.  It
142
uses a modified version of the SM2 algorithm taking inspiration from mnemosyne
143
and anki.")
144
    (license license:isc)))
145
146
(define-public cpptest
147
  (package
148
    (name "cpptest")
149
    (version "1.1.2")
150
    (source (origin
151
              (method url-fetch)
152
              (uri (string-append "mirror://sourceforge/cpptest/cpptest/cpptest-"
153
                                  version "/cpptest-" version ".tar.gz"))
154
              (sha256
155
               (base32
156
                "09v070a9dv6zq6hgj4v67i31zsis3s96psrnhlq9g4vhdcaxykwy"))))
157
    (build-system gnu-build-system)
158
    (home-page "http://cpptest.sourceforge.net/")
159
    (synopsis "")
160
    (description "")
161
    (license license:lgpl2.1)))
162
163
(define-public khanat
164
  (package
165
    (name "khanat")
166
    (version "3.0")
167
    (source (origin
168
              (method git-fetch)
169
              (uri (git-reference
170
                     (url "https://git.khaganat.net/khaganat/mmorpg_khanat/khanat-opennel-code.git")
171
                     ;(commit "0ca90c49a5e1e6f8865ef15517bd25e388a2db96")))
172
                     (commit "302ee7e20ea93caded5d46637918ba0092f207fd")))
173
              (sha256
174
               (base32
175
                ;"1rfrk43ya8mx576ycs4rln67kdrci37ryixk7abf1cqjdrz7a883"))))
176
                "1w0bhspsgf3dg33xdyypc4rm935n6g5d7shid92jf4j6jb0cjahh"))))
177
    (build-system cmake-build-system)
178
    (inputs
179
     `(("boost" ,boost)
180
       ("cpptest" ,cpptest)
181
       ("curl" ,curl)
182
       ("giflib" ,giflib)
183
       ("libfreetype" ,freetype)
184
       ("libjpeg" ,libjpeg)
185
       ("libpng" ,libpng)
186
       ("libvorbis" ,libvorbis)
187
       ("libxml2" ,libxml2)
188
       ("lua" ,lua-5.1)
189
       ("luabind" ,luabind)
190
       ("mesa" ,mesa)
191
       ("openal" ,openal)
192
       ("openssl" ,openssl)
193
       ("zlib" ,zlib)))
194
    (arguments
195
     `(#:out-of-source? #t
196
       #:tests? #f
197
       #:configure-flags (list "-DFINAL_VERSION=ON" "-DWITH_RYZOM_SERVER=OFF"
198
                               "-DWITH_RYZOM_TOOLS=OFF" "-DWITH_NEL_TESTS=OFF"
199
                               "-DWITH_RYZOM_CLIENT=ON" "-DWITH_NEL_TOOLS=OFF"
200
                               "-DWITH_NEL_SAMPLES=OFF" "-DWITH_STATIC=OFF"
201
                               "-DWITH_STATIC_EXTERNAL=OFF")
202
       #:phases
203
       (modify-phases %standard-phases
204
         (add-before 'configure 'chdir
205
           (lambda _
206
             (chdir "code")))
207
         (add-after 'install 'link-khanat
208
           (lambda* (#:key outputs #:allow-other-keys)
209
             (let* ((out (assoc-ref outputs "out"))
210
                    (game (string-append out "/games/khanat_client"))
211
                    (bin (string-append out "/bin/khanat_client")))
212
             (symlink game bin)))))))
213
    (home-page "https://khaganat.net/")
214
    (synopsis "")
215
    (description "")
216
    (license license:agpl3)))
217
218
(define-public anki
219
  (package
220
    (name "anki")
221
    ; the latest stable version requires qt4 webkit which we don't have because
222
    ; of issues on arm and probably security reasons.
223
    (version "2.1.0beta25")
224
    (source (origin
225
              (method url-fetch)
226
              (uri (string-append "https://apps.ankiweb.net/downloads/beta/anki-"
227
                                  version "-source.tgz"))
228
              (sha256
229
               (base32
230
                "1p42b395k3kny5c17na3sw95mya3cw2hg3nxyj3b3mdhwdcy677r"))))
231
    (build-system gnu-build-system)
232
    (propagated-inputs
233
     `(("python" ,python)
234
       ("python-pyaudio" ,python-pyaudio)
235
       ("python-pyqt" ,python-pyqt)
236
       ("python-sip" ,python-sip)
237
       ("python-decorator" ,python-decorator)))
238
    (arguments
239
     `(#:tests? #f
240
       #:phases
241
       (modify-phases %standard-phases
242
         (delete 'configure)
243
         (delete 'build)
244
         (replace 'install
245
           (lambda* (#:key inputs outputs #:allow-other-keys)
246
             (substitute* "anki/__init__.py"
247
               (("< 6") "< 5"))
248
             (substitute* "aqt/qt.py"
249
               (("from PyQt5.QtWebEngineWidgets import QWebEnginePage") ""))
250
             (let* ((output (assoc-ref outputs "out"))
251
                    (bindir (string-append output "/bin"))
252
                    (libdir (string-append output "/lib/python3.5/site-packages")))
253
               (for-each
254
                 (lambda (file)
255
                   (mkdir-p (dirname (string-append libdir "/" file)))
256
                   (copy-file file (string-append libdir "/" file)))
257
                 (append (find-files "anki" ".*\\.py")
258
                         (find-files "aqt" ".*\\.py")))
259
               (mkdir-p bindir)
260
               (with-output-to-file (string-append bindir "/anki")
261
                 (lambda _
262
                   (display
263
                     (string-append
264
                       "#!" (assoc-ref inputs "python") "/bin/python3\n"
265
                       "import aqt\n"
266
                       "aqt.run()\n"))))
267
               (chmod (string-append bindir "/anki") #o755)))))))
268
    (home-page "https://apps.ankiweb.net")
269
    (synopsis "")
270
    (description "")
271
    (license license:gpl2)))
272
273
(define-public emojicode
274
  (package
275
    (name "emojicode")
276
    (version "0.5.4")
277
    (source (origin
278
              (method url-fetch)
279
              (uri (string-append "https://github.com/emojicode/emojicode/archive/v"
280
                                  version ".tar.gz"))
281
              (sha256
282
               (base32
283
                "1l3f4i0vh09x8dz5fl1f4mb8wlgmi0j2bhjkfzrnmbgp09hi8wsl"))))
284
    (build-system cmake-build-system)
285
    (arguments
286
     `(#:phases
287
       (modify-phases %standard-phases
288
         (add-before 'configure 'fixgcc7
289
           (lambda _
290
             (display (getenv "CXX_INCLUDE_PATH"))
291
             (setenv "CPATH" (getenv "C_INCLUDE_PATH"))
292
             (unsetenv "C_INCLUDE_PATH")
293
             (setenv "CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES" (getenv "CPATH"))
294
             (setenv "CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES" (getenv "CPATH")))))))
295
    (inputs
296
     `(("llvm" ,llvm)))
297
    (native-inputs
298
     `(("gcc" ,gcc-7)))
299
    (home-page "http://www.emojicode.org")
300
    (synopsis "World’s only programming language that’s bursting with emojis")
301
    (description "Emojicode is the only programming language consisting of
302
emojis.  Emojicode is a straightforward language to learn, whatever background
303
you have.")
304
    (license license:artistic2.0)))
305
306
(define-public torque3d
307
  (package
308
    (name "torque3d")
309
    (version "3.10.1")
310
    (source (origin
311
              (method url-fetch)
312
              (uri (string-append "https://github.com/GarageGames/Torque3D/archive/v"
313
                                  version ".tar.gz"))
314
              (file-name (string-append name "-" version ".tar.gz"))
315
              (sha256
316
               (base32
317
                "0qxaybdmir90ynfqs7l45di7vh0xa619abq53l9avj6yycihgw8b"))))
318
    (build-system cmake-build-system)
319
    (arguments
320
     `(#:configure-flags
321
       (list "-DTORQUE_APP_NAME=Torque3D")
322
       #:tests? #f))
323
    (inputs
324
     `(("gtk+" ,gtk+)
325
       ("libxft" ,libxft)
326
       ("openal" ,openal)))
327
    (native-inputs
328
     `(("nasm" ,nasm)
329
       ("pkg-config" ,pkg-config)))
330
    (home-page "http://torque3d.org/")
331
    (synopsis "Game engine")
332
    (description "")
333
    (license license:expat)))
334
335
(define-public actor-framework
336
  (package
337
    (name "actor-framework")
338
    (version "0.16.3")
339
    (source (origin
340
              (method git-fetch)
341
              (uri (git-reference
342
                     (url "https://github.com/actor-framework/actor-framework.git")
343
                     (commit version)))
344
              (sha256
345
               (base32
346
                "0nqw1cv7wxbcn2qwm08qffb6k4n3kgvdiaphks5gjgm305jk4vnx"))))
347
    (build-system cmake-build-system)
348
    (arguments
349
     `(#:configure-flags (list "-DCAF_NO_EXAMPLES=yes")))
350
    (home-page "http://actor-framework.org/")
351
    (synopsis "Concurrency library implementing the actor model")
352
    (description "CAF is a C++11 actor model implementation featuring
353
lightweight & fast actor implementations, pattern matching for messages,
354
network transparent messaging, and more.")
355
    (license (list license:boost1.0 license:bsd-3))))
356
357
(define-public mecab
358
  (package
359
    (name "mecab")
360
    (version "0.996")
361
    (source (origin
362
              (method url-fetch)
363
              (uri "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE")
364
              (file-name (string-append name "-" version ".tar.gz"))
365
              (sha256
366
               (base32
367
                "0ncwlqxl1hdn1x4v4kr2sn1sbbcgnhdphp0lcvk74nqkhdbk4wz0"))
368
              (patches
369
                (search-patches
370
                  "mecab-variable-param.patch"))))
371
    (build-system gnu-build-system)
372
    (search-paths
373
      (list (search-path-specification
374
              (variable "MECAB_DICDIR")
375
              (separator #f)
376
              (files '("lib/mecab/dic")))))
377
    (arguments
378
     `(#:phases
379
       (modify-phases %standard-phases
380
         (add-before 'build 'add-mecab-dicdir-variable
381
           (lambda _
382
             (substitute* "mecabrc.in"
383
               (("dicdir = .*")
384
                "dicdir = $MECAB_DICDIR"))
385
             (substitute* "mecab-config.in"
386
               (("echo @libdir@/mecab/dic")
387
                "if [ -z \"$MECAB_DICDIR\" ]; then
388
  echo @libdir@/mecab/dic
389
else
390
  echo \"$MECAB_DICDIR\"
391
fi"))
392
             #t)))))
393
    (inputs
394
     `(("libiconv" ,libiconv)))
395
    (home-page "https://taku910.github.io/mecab")
396
    (synopsis "Morphological analysis engine for texts")
397
    (description "Mecab is a morphological analysis engine developped as a
398
collaboration between the Kyoto university and Nippon Telegraph and Telephone
399
Corporation.  The engine is independent of any language, dictionary or corpus.
400
")
401
    (license (list license:gpl2+ license:lgpl2.1+ license:bsd-3))))
402
403
(define-public mecab-ipadic
404
  (package
405
    (name "mecab-ipadic")
406
    (version "2.7.0")
407
    (source (origin
408
              (method url-fetch)
409
              (uri "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM")
410
              (file-name (string-append name "-" version ".tar.gz"))
411
              (sha256
412
               (base32
413
                "08rmkvj0f0x6jq0axrjw2y5nam0mavv6x77dp9v4al0wi1ym4bxn"))))
414
    (build-system gnu-build-system)
415
    (arguments
416
     `(#:configure-flags
417
       (list (string-append "--with-dicdir=" (assoc-ref %outputs "out")
418
                            "/lib/mecab/dic")
419
             "--with-charset=utf8")
420
       #:phases
421
       (modify-phases %standard-phases
422
         (add-before 'configure 'set-mecab-dir
423
           (lambda* (#:key outputs #:allow-other-keys)
424
             (setenv "MECAB_DICDIR" (string-append (assoc-ref outputs "out")
425
                                                   "/lib/mecab/dic"))
426
             #t)))))
427
    (native-inputs
428
     `(("mecab" ,mecab))); for mecab-config
429
    (home-page "")
430
    (synopsis "")
431
    (description "")
432
    (license (license:non-copyleft "COPYING"))))
433
434
(define-public uqm
435
  (package
436
    (name "uqm")
437
    (version "0.7.0")
438
    (source (origin
439
              (method url-fetch)
440
              (uri (string-append "mirror://sourceforge/sc2/UQM/0.7/uqm-"
441
                                  version "-1-source.tgz"))
442
              (sha256
443
               (base32
444
                "1rr8s25qsbqqbp3qsm2ndv11iqaxh72fc6fd8xdf80vb56piaq0k"))))
445
    (build-system gnu-build-system)
446
    (arguments
447
     `(#:tests? #f; no tests
448
       #:phases
449
       (modify-phases %standard-phases
450
         (delete 'configure)
451
         (replace 'build
452
           (lambda* (#:key outputs inputs #:allow-other-keys)
453
             ;; Configuration can only happen interactively, so change default
454
             ;; values instead.
455
             (substitute* "build/unix/build.config"
456
               (("/usr/local/games") (assoc-ref outputs "out")))
457
             (substitute* "build.sh"
458
               (("/bin/sh") (which "sh")))
459
             (setenv "CFLAGS"
460
                     (string-append
461
                       "-I" (assoc-ref inputs "sdl-image") "/include/SDL"
462
                       " -I" (assoc-ref inputs "glu") "/include"
463
                       " -O3 -DNDEBUG"))
464
             (chmod "build/unix/build_collect" #x755)
465
             (setenv "MAKE_VERBOSE" "1")
466
             (invoke (which "sh") "build.sh" "uqm")
467
             #t))
468
         (replace 'install
469
           (lambda* (#:key outputs inputs #:allow-other-keys)
470
             ;; Configuration can only happen interactively, so change default
471
             ;; values instead.
472
             (invoke (which "sh") "build/unix/build.sh" "uqm" "install")
473
             (mkdir-p (string-append (assoc-ref outputs "out")
474
                                     "/share/uqm/content/packages"))
475
             (copy-file (assoc-ref inputs "uqm-content")
476
                        (string-append (assoc-ref outputs "out")
477
                                       "/share/uqm/content/packages/uqm-"
478
                                       ,version "-content.uqm"))
479
             #t)))))
480
    (inputs
481
     `(("libmikmod" ,libmikmod)
482
       ("libvorbis" ,libvorbis)
483
       ("glu" ,glu)
484
       ("sdl" ,sdl)
485
       ("sdl-image" ,sdl-image)
486
       ("uqm-content"
487
        ,(origin
488
           (method url-fetch)
489
           (uri (string-append "mirror://sourceforge/sc2/UQM/0.7/uqm-"
490
                               version "-content.uqm"))
491
           (sha256
492
            (base32
493
             "1gx39ns698hyczd4nx73mr0z86bbi4q3h8sw3pxjh1lzla5xpxmq"))))))
494
    (native-inputs
495
     `(("pkg-config" ,pkg-config)))
496
    (home-page "http://sc2.sourceforge.net")
497
    (synopsis "")
498
    (description "")
499
    (license license:gpl2+)))
500