gnu: trytond: Ensure all modules are found.
[jackhill/guix/guix.git] / gnu / packages / education.scm
CommitLineData
2614de3c
DM
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
9e39ac41 3;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
b84257c0 4;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
808e4c14 5;;; Copyright © 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
a1093d73 6;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
a7e6e9ad 7;;; Copyright © 2018, 2019, 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
8534c949 8;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
7adf6f1b 9;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org>
648ae621 10;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
73c81ae0 11;;; Copyright © 2020 Prafulla Giri <pratheblackdiamond@gmail.com>
a68cca64 12;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
2614de3c
DM
13;;;
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
29(define-module (gnu packages education)
30 #:use-module (ice-9 regex)
31 #:use-module (gnu packages)
8534c949 32 #:use-module (gnu packages audio)
3cfd12f3
NG
33 #:use-module (gnu packages base)
34 #:use-module (gnu packages bash)
2614de3c 35 #:use-module (gnu packages compression)
230e59da 36 #:use-module (gnu packages curl)
4f963be0 37 #:use-module (gnu packages databases)
7adf6f1b 38 #:use-module (gnu packages flex)
4f963be0 39 #:use-module (gnu packages fonts)
3cfd12f3 40 #:use-module (gnu packages freedesktop)
4f963be0 41 #:use-module (gnu packages game-development)
2614de3c 42 #:use-module (gnu packages gettext)
0ea179fd
RW
43 #:use-module (gnu packages glib)
44 #:use-module (gnu packages gnome)
648ae621 45 #:use-module (gnu packages golang)
0ea179fd 46 #:use-module (gnu packages gtk)
34208bf5 47 #:use-module (gnu packages image)
3cfd12f3 48 #:use-module (gnu packages javascript)
d2c0a7a2 49 #:use-module (gnu packages kde)
b27aacbf 50 #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
8534c949 51 #:use-module (gnu packages mp3)
7adf6f1b 52 #:use-module (gnu packages ncurses)
2614de3c 53 #:use-module (gnu packages perl)
0ea179fd
RW
54 #:use-module (gnu packages pkg-config)
55 #:use-module (gnu packages python)
8534c949
RS
56 #:use-module (gnu packages python-web)
57 #:use-module (gnu packages python-xyz)
3cfd12f3 58 #:use-module (gnu packages qt)
7adf6f1b 59 #:use-module (gnu packages readline)
0ea179fd 60 #:use-module (gnu packages sdl)
cd0322a3 61 #:use-module (gnu packages sqlite)
0ea179fd 62 #:use-module (gnu packages texinfo)
96ec4604 63 #:use-module (gnu packages tls)
8534c949 64 #:use-module (gnu packages video)
7e48e849 65 #:use-module (gnu packages xorg)
0ea179fd 66 #:use-module (gnu packages xml)
2614de3c
DM
67 #:use-module ((guix licenses) #:prefix license:)
68 #:use-module (guix packages)
69 #:use-module (guix download)
3cfd12f3 70 #:use-module (guix git-download)
2614de3c
DM
71 #:use-module (guix svn-download)
72 #:use-module (guix utils)
2614de3c 73 #:use-module (guix build-system cmake)
3cfd12f3 74 #:use-module (guix build-system gnu)
648ae621 75 #:use-module (guix build-system go)
3b2cf5c8 76 #:use-module (guix build-system python)
7d796d80 77 #:use-module (guix build-system qt)
3cfd12f3 78 #:use-module (guix build-system trivial)
2614de3c
DM
79 #:use-module (srfi srfi-1))
80
0ea179fd
RW
81(define-public gcompris
82 (package
83 (name "gcompris")
cdc827b3 84 (version "17.05")
0ea179fd
RW
85 (source (origin
86 (method url-fetch)
87 (uri (string-append "http://gcompris.net/download/gtk/src/gcompris-"
88 version ".tar.bz2"))
89 (sha256
90 (base32
cdc827b3 91 "18y483alb4r4vfmh80nnl0pah5gv0b8frcm6l1drb9njn5xlcpgc"))))
0ea179fd
RW
92 (build-system gnu-build-system)
93 (arguments
94 `(#:configure-flags
95 ;; Use SDL mixer because otherwise GCompris would need an old version
96 ;; of Gstreamer.
97 (list "--enable-sdlmixer"
98 "LDFLAGS=-lgmodule-2.0")
99 #:phases
100 (modify-phases %standard-phases
101 (add-after 'set-paths 'set-sdl-paths
102 (lambda* (#:key inputs #:allow-other-keys)
103 (setenv "CPATH"
bf182596
LC
104 (string-append
105 (search-input-directory inputs "include/SDL")
106 ":" (or (getenv "CPATH") ""))))))))
0ea179fd
RW
107 (inputs
108 `(("gtk+" ,gtk+-2)
109 ("librsvg" ,librsvg)
110 ("libxml2" ,libxml2)
111 ("sdl-mixer" ,sdl-mixer)
112 ("sqlite" ,sqlite)
113 ("glib:bin" ,glib)
114 ("python" ,python)))
115 (native-inputs
116 `(("intltool" ,intltool)
117 ("texinfo" ,texinfo)
118 ("texi2html" ,texi2html)
119 ("glib:bin" ,glib "bin")
120 ("pkg-config" ,pkg-config)))
09a3d34c 121 (home-page "https://gcompris.net")
0ea179fd
RW
122 (synopsis "Educational software suite")
123 (description "GCompris is an educational software suite comprising of
124numerous activities for children aged 2 to 10. Some of the activities are
125game orientated, but nonetheless still educational. Below you can find a list
126of categories with some of the activities available in that category.
127
128@enumerate
129@item computer discovery: keyboard, mouse, different mouse gestures, ...
130@item arithmetic: table memory, enumeration, double entry table, mirror image, ...
131@item science: the canal lock, the water cycle, the submarine, electric simulation ...
132@item geography: place the country on the map
133@item games: chess, memory, connect 4, oware, sudoku ...
134@item reading: reading practice
135@item other: learn to tell time, puzzle of famous paintings, vector drawing, cartoon making, ...
136@end enumerate
137")
138 (license license:gpl3+)))
b84257c0 139
b27aacbf
EF
140(define-public gcompris-qt
141 (package
142 (name "gcompris-qt")
edbf8272 143 (version "1.1")
b27aacbf 144 (source
96ec4604
TGR
145 (origin
146 (method url-fetch)
147 (uri (string-append
148 "https://gcompris.net/download/qt/src/gcompris-qt-"
149 version ".tar.xz"))
150 (sha256
edbf8272 151 (base32 "1bpjwrv83rhikbycpyfpf6dbqr0xfq6amgdpqfgfph6nzr3zka7h"))))
1ac96992 152 (build-system qt-build-system)
b27aacbf 153 (arguments
5c105203
EF
154 `(#:phases
155 (modify-phases %standard-phases
7e48e849
EF
156 (add-before 'check 'start-xorg-server
157 (lambda* (#:key inputs #:allow-other-keys)
158 ;; The test suite requires a running X server.
07e98fb9 159 (system "Xvfb :1 &")
7e48e849 160 (setenv "DISPLAY" ":1")
6ace1ec8
EF
161 ;; The test suite wants to write to /homeless-shelter
162 (setenv "HOME" (getcwd))
1ac96992 163 #t)))
7e48e849
EF
164 #:configure-flags (list "-DQML_BOX2D_MODULE=disabled"
165 "-DBUILD_TESTING=TRUE")))
b27aacbf
EF
166 (native-inputs
167 `(("extra-cmake-modules" ,extra-cmake-modules)
168 ("gettext" ,gettext-minimal)
668307c0 169 ("kdoctools" ,kdoctools)
5c105203 170 ("perl" ,perl)
7e48e849 171 ("qttools" ,qttools)
ff337525 172 ("xorg-server" ,xorg-server-for-tests)))
b27aacbf 173 (inputs
96ec4604 174 `(("openssl" ,openssl)
6ace1ec8 175 ("python" ,python-wrapper)
ea0a5107 176 ("qtbase" ,qtbase-5)
5c105203
EF
177 ("qtdeclarative" ,qtdeclarative)
178 ("qtgraphicaleffects" ,qtgraphicaleffects)
179 ("qtmultimedia" ,qtmultimedia)
180 ("qtquickcontrols" ,qtquickcontrols)
181 ("qtsensors" ,qtsensors)
182 ("qtsvg" ,qtsvg)
183 ("qtxmlpatterns" ,qtxmlpatterns)))
184 (home-page "https://gcompris.net/index-en.html")
b27aacbf
EF
185 (synopsis "Educational games for small children")
186 (description
187 "Gcompris offers a large collection of educational games for small
188children, designed to be a unified interface to integrate more educational
189games. Language-oriented games contain vocabulary, sounds, and voices for
190many different languages.
191Currently available boards include:
192@enumerate
193@item learning how to use a mouse and keyboard
194@item learning simple arithmetic
195@item learning how to read an analog clock
196@item recognize letters after hearing their names
197@item reading practice
198@item small games (memory games, jigsaw puzzles, ...)
199@end enumerate\n")
fe50813c
EF
200 (license (list license:silofl1.1 ; bundled fonts
201 license:gpl3+))))
b27aacbf 202
7d00f2ad
TGR
203(define-public gotypist
204 (let ((revision "0")
205 (commit "03f8618f8e23acdaa94cda3bcf197da520db8dd4"))
206 (package
207 (name "gotypist")
208 (version (git-version "0.0.0" revision commit))
209 (source
210 (origin
211 (method git-fetch)
212 (uri (git-reference
213 (url "https://github.com/KappaDistributive/gotypist")
214 (commit commit)))
215 (file-name (git-file-name name version))
216 (sha256
217 (base32 "0sjndaspqfzffjxz388m384wqz5lzbiw4cwpi688k5aq7n05jh0f"))))
218 (build-system go-build-system)
219 (arguments
220 `(#:unpack-path "github.com/KappaDistributive/gotypist"
221 #:import-path "github.com/KappaDistributive/gotypist/v1"
222 #:install-source? #f
223 #:phases
224 (modify-phases %standard-phases
225 (add-before 'build 'install-data
226 (lambda* (#:key import-path unpack-path outputs #:allow-other-keys)
227 (let* ((out (assoc-ref outputs "out"))
228 (data (string-append out "/share/gotypist/data")))
229 (with-directory-excursion "src"
230 (with-directory-excursion import-path
231 (substitute* "lesson.go"
232 (("\"data/")
233 (format #f "\"~a/" data))))
234 (with-directory-excursion unpack-path
235 (mkdir-p data)
236 (copy-recursively "data" data))))))
237 (add-after 'install 'rename-executable
238 (lambda* (#:key outputs #:allow-other-keys)
239 (let* ((out (assoc-ref outputs "out"))
240 (bin (string-append out "/bin")))
241 (with-directory-excursion bin
242 (rename-file "v1" "gotypist"))))))))
243 (native-inputs
8394619b 244 (list go-github-com-gizak-termui go-github-com-stretchr-testify))
7d00f2ad
TGR
245 (home-page "https://github.com/KappaDistributive/gotypist")
246 (synopsis "Simple typing trainer for text terminals")
247 (description
248 "Gotypist is a simple typing tutor for text terminals, similar to
249gtypist but with no instruction. Hence it's best suited for people who already
250know how to touch type and wish to improve their typing accuracy and/or speed.
251
252You can provide your own lesson text, choose from the included samples, or ask
253@command{gotypist} to construct a random lesson from a fixed list of the most
254frequently used words in American English.")
255 (license license:expat))))
256
b84257c0
HG
257(define-public tipp10
258 (package
259 (name "tipp10")
260 (version "2.1.0")
261 (source (origin
262 (method url-fetch)
263 ;; guix download is not able to handle the download links on the
264 ;; home-page, which use '<meta http-equiv="refresh" …>'
265 (uri (string-append "mirror://debian/pool/main/"
266 "t/tipp10/tipp10_2.1.0.orig.tar.gz"))
267 (sha256
268 (base32
269 "0d387b404j88gsv6kv0rb7wxr23v5g5vl6s5l7602x8pxf7slbbx"))
808e4c14 270 ;; Apply patches in the order determined by Debian
b84257c0 271 (patches (search-patches "tipp10-fix-compiling.patch"
808e4c14
EF
272 "tipp10-remove-license-code.patch"
273 "tipp10-disable-downloader.patch"
274 "tipp10-qt5.patch"))))
b84257c0
HG
275 (build-system cmake-build-system)
276 (arguments
277 `(#:tests? #f ; packages has no tests
278 #:phases
279 (modify-phases %standard-phases
280 (add-after 'unpack 'disable-new-version-check
7cc98473
RW
281 (lambda _
282 ;; Make new version check to default to false.
283 ;; TODO: Remove the checkbox from the dialog and the check itself
284 (substitute* '("widget/settingspages.cpp" "widget/mainwindow.cpp")
285 (("settings.value(\"check_new_version\", true)")
286 "settings.value(\"check_new_version\", false)"))
287 #t))
b84257c0 288 (replace 'configure
7cc98473
RW
289 (lambda* (#:key outputs #:allow-other-keys)
290 (let ((out (assoc-ref outputs "out")))
291 ;; Make program honor $PREFIX
292 (substitute* "tipp10.pro"
293 (("\\.path = /usr/") (string-append ".path = " out "/")))
294 (substitute* "def/defines.h"
295 (("\"/usr/") (string-append "\"" out "/")))
296 ;; Recreate Makefile
946e5e8a 297 (invoke "qmake")))))))
b84257c0 298 (inputs
8394619b 299 (list qtbase-5 qtmultimedia))
b84257c0
HG
300 (home-page "https://www.tipp10.com/")
301 (synopsis "Touch typing tutor")
9e39ac41
RW
302 (description "Tipp10 is a touch typing tutor. The ingenious thing about
303the software is its intelligence feature: characters that are mistyped are
304repeated more frequently. Beginners will find their way around right away so
305they can start practicing without a hitch.
b84257c0
HG
306
307Useful support functions and an extensive progress tracker, topical lessons
308and the ability to create your own practice lessons make learning to type
9e39ac41 309easy.")
b84257c0 310 (license license:gpl2)))
3cfd12f3
NG
311
312(define-public snap
313 (package
314 (name "snap")
e4e90374 315 (version "6.9.0")
3cfd12f3
NG
316 (source
317 (origin
318 (method git-fetch)
319 (uri (git-reference
b0e7b699 320 (url "https://github.com/jmoenig/Snap")
458f410b 321 (commit (string-append "v" version))))
3cfd12f3
NG
322 (file-name (git-file-name name version))
323 (sha256
e4e90374 324 (base32 "1wppz57lrrribrfnaiv6jrrf703w7i6ja0dnz8yx8naxhbsglwyf"))))
3cfd12f3
NG
325 (build-system trivial-build-system)
326 (arguments
327 `(#:modules ((guix build utils))
328 #:builder
329 (begin
330 (use-modules (guix build utils))
331 (let* ((source (assoc-ref %build-inputs "source"))
332 (out (assoc-ref %outputs "out"))
333 (share (string-append out "/share/snap")))
334 (copy-recursively source share)
335 ;; Replace the sole minified file in the package.
3a352a44 336 (with-directory-excursion (string-append share "/src")
3cfd12f3 337 (delete-file "FileSaver.min.js")
2dffe476
LC
338 (symlink (search-input-file %build-inputs
339 "/share/javascript/FileSaver.min.js")
3cfd12f3
NG
340 "FileSaver.min.js"))
341 ;; Create a "snap" executable.
342 (let* ((bin (string-append out "/bin"))
343 (script (string-append bin "/snap"))
344 (snap (string-append share "/snap.html"))
2dffe476
LC
345 (bash (search-input-file %build-inputs "/bin/sh"))
346 (xdg-open (search-input-file %build-inputs
347 "/bin/xdg-open")))
3cfd12f3
NG
348 (mkdir-p bin)
349 (call-with-output-file script
350 (lambda (port)
351 (format port "#!~a\n~a '~a'" bash xdg-open snap)))
e4e90374 352 (chmod script #o555))))))
3cfd12f3
NG
353 (inputs
354 `(("bash" ,bash-minimal)
355 ("js-filesaver" ,js-filesaver)
356 ("xdg-utils" ,xdg-utils)))
357 (home-page "https://snap.berkeley.edu")
358 (synopsis "Visual, blocks based programming language")
359 (description "Snap! (formerly BYOB) is a visual, drag-and-drop
360programming language. It is an extended reimplementation of Scratch (a
361project of the Lifelong Kindergarten Group at the MIT Media Lab) that
362allows you to Build Your Own Blocks. It also features first class
363lists, first class procedures, and continuations. These added
364capabilities make it suitable for a serious introduction to computer
365science for high school or college students.
366
367This package provides a @command{snap} executable calling @command{xdg-open}
368to open the application in a web browser, for offline usage.")
369 (license license:agpl3+)))
3b2cf5c8
NG
370
371(define-public toutenclic
372 (package
373 (name "toutenclic")
f5557bde 374 (version "7.00")
3b2cf5c8
NG
375 (source
376 (origin
377 (method url-fetch)
378 (uri (string-append "http://www.bipede.fr/downloads/logiciels/"
f5557bde 379 "ToutEnClic-" version "-src.zip"))
3b2cf5c8 380 (sha256
f5557bde 381 (base32 "0xg24p925rl5bfqsq3jb2lrkidb0f3kbmay5iyxxmjsn3ra0blyh"))))
3b2cf5c8
NG
382 (build-system python-build-system)
383 (arguments
632c508c 384 `(#:tests? #f ; no tests
3b2cf5c8
NG
385 #:phases
386 (modify-phases %standard-phases
387 (delete 'build)
388 (replace 'install
389 (lambda* (#:key outputs #:allow-other-keys)
390 (let* ((out (assoc-ref outputs "out"))
391 (share (string-append out "/share/toutenclic"))
392 (pixmaps (string-append out "/share/pixmaps"))
f5557bde 393 (doc (string-append out "share/doc/" ,name "-" ,version))
3b2cf5c8 394 (bin (string-append out "/bin"))
f5557bde 395 (executable "toutenclic"))
3b2cf5c8
NG
396 ;; Install icon.
397 (install-file "toutenclic.png" pixmaps)
398 ;; Move files into "share/" directory.
f5557bde
NG
399 (for-each (lambda (f) (install-file f share))
400 (find-files "." "\\.py$"))
401 ;; Install documentation.
402 (install-file "ToutEnClic.pdf" doc)
3b2cf5c8
NG
403 ;; Create executable in "bin/".
404 (mkdir-p bin)
405 (with-directory-excursion bin
f5557bde 406 (symlink (string-append share "/" executable ".py")
3b2cf5c8
NG
407 executable)))
408 #t))
409 (add-after 'install 'create-desktop-file
410 (lambda* (#:key outputs #:allow-other-keys)
411 (let* ((out (assoc-ref outputs "out"))
412 (applications (string-append out "/share/applications")))
413 (mkdir-p applications)
414 (call-with-output-file
415 (string-append applications "/toutenclic.desktop")
416 (lambda (file)
417 (format file
418 "[Desktop Entry]~@
419 Name=ToutEnClic~@
420 Comment=For schooling without difference~@
f5557bde
NG
421 Exec=~a/bin/toutenclic~@
422 TryExec=~@*~a/bin/toutenclic~@
3b2cf5c8
NG
423 Terminal=false~@
424 Icon=toutenclic~@
425 Type=Application~%"
426 out)))
427 #t))))))
5359b601 428 (native-inputs
8394619b 429 (list unzip))
5359b601 430 (inputs
8394619b 431 (list python-pyqt))
3b2cf5c8
NG
432 (synopsis "School tools for physically disabled children")
433 (description "ToutEnClic is intended to facilitate the schooling
434of physically disabled children in ordinary schools. It is both
435a multi-page virtual exercise book and a kit including pencil,
436scissors, glue, ruler, compass, protractor and square. A virtual
437keyboard is also available if the child does not have any other
438specialized device.")
439 (home-page "https://bipede.fr/contrib/")
440 (license license:gpl3)))
4f963be0
NG
441
442(define-public childsplay
443 (package
444 (name "childsplay")
445 (version "3.4")
446 (source (origin
447 (method url-fetch)
448 (uri (string-append
449 "mirror://sourceforge/schoolsplay/"
450 "childsplay-" version ".tgz"))
451 (sha256
452 (base32
453 "0z7yp2swjnbz51vn2zyfnjn40jq38l5mbh15yafmx1z3vn2z1m77"))))
454 (build-system python-build-system)
455 (arguments
456 `(#:python ,python-2
457 #:tests? #f
458 #:phases
459 (modify-phases %standard-phases
460 (add-after 'unpack 'unbundle-dejavu-font
461 (lambda* (#:key inputs #:allow-other-keys)
462 (let* ((dejavu-dir
463 (string-append (assoc-ref inputs "font-dejavu")
464 "/share/fonts/truetype"))
465 (dejavu-font
466 (string-append dejavu-dir
467 "/DejaVuSansCondensed-Bold.ttf")))
468 (substitute* "SPConstants.py"
469 (("^(TTF(BOLD)? = ).*" _ prefix)
470 (string-append prefix "'" dejavu-font "'\n")))
471 (for-each (lambda (f) (delete-file f))
472 (find-files "lib/SPData" "DejaVu"))
473 #t)))
474 (delete 'build)
475 (replace 'install
476 (lambda* (#:key outputs #:allow-other-keys)
477 (let* ((out (assoc-ref outputs "out"))
478 (pixmaps (string-append out "/share/pixmaps"))
479 (share (string-append out "/share/childsplay"))
480 (doc (string-append out "/share/doc/" ,name "-",version)))
481 ;; Install icon.
482 (install-file "lib/SPData/themes/childsplay/logo_cp.svg" pixmaps)
483 ;; Install data.
484 (mkdir-p share)
485 (for-each (lambda (f)
486 (copy-recursively f (string-append share "/" f)))
487 '("alphabet-sounds" "lib" "locale" "SPWidgets"))
488 (for-each (lambda (f) (install-file f share))
489 (find-files "." "\\.(py|dev|db)$"))
490 ;; Install documentation.
491 (mkdir-p doc)
492 (copy-recursively "docs" doc)
493 #t)))
494 (add-after 'install 'create-executable
495 (lambda* (#:key outputs inputs #:allow-other-keys)
bc64d955 496 (let* ((python (search-input-file inputs "/bin/python"))
4f963be0
NG
497 (out (assoc-ref outputs "out"))
498 (bin (string-append out "/bin"))
499 (executable (string-append bin "/childsplay")))
500 (mkdir-p bin)
501 (call-with-output-file executable
502 (lambda (file)
503 (format file
504 "~a ~a"
505 python
506 (string-append out "/share/childsplay/childsplay.py"))))
507 (chmod executable #o555)
508 #t)))
509 (add-after 'install 'create-desktop-file
510 (lambda* (#:key outputs #:allow-other-keys)
511 (let* ((out (assoc-ref outputs "out"))
512 (applications (string-append out "/share/applications")))
513 (mkdir-p applications)
514 (call-with-output-file
515 (string-append applications "/childsplay.desktop")
516 (lambda (file)
517 (format file
518 "[Desktop Entry]~@
519 Name=Childsplay~@
520 Comment=Suite of educational games for young children~@
521 Comment[ca]=Conjunt de jocs educatius per a xiquets~@
522 Comment[es]=Conjunto de juegos educativos para niños~@
523 Comment[de]=Sammlung mit lehrreichen Spielen für kleine Kinder~@
73c81ae0 524 Exec=~a/bin/childsplay~@
4f963be0
NG
525 Terminal=false~@
526 Icon=logo_cp.svg~@
527 Type=Application~@
528 Categories=Application;Game;Education;KidsGame;~@
529 Keywords=suite;children;games;young;educational;~%"
530 out)))
531 #t))))))
532 (inputs
533 `(("font-dejavu" ,font-dejavu)
534 ("pygame" ,python2-pygame)
535 ("sqlalchemy" ,python2-sqlalchemy)))
536 (synopsis "Suite of educational games for young children")
537 (description "Childsplay is a collection of educational activities
538for young children. Childsplay can be used at home, kindergartens and
539pre-schools. Childsplay is a fun and safe way to let young children
540use the computer and at the same time teach them a little math,
541letters of the alphabet, spelling, eye-hand coordination, etc.")
542 (home-page "http://www.schoolsplay.org")
543 (license license:gpl3+)))
52e7295f 544
3450bb81
NG
545(define-public omnitux
546 (package
547 (name "omnitux")
548 (version "1.2.1")
549 (source
550 (origin
551 (method url-fetch)
552 (uri (string-append "mirror://sourceforge/omnitux/omnitux/"
553 "v" version "/omnitux-" version ".tar.bz2"))
554 (sha256
555 (base32 "1wmmmbzmxd0blhn00d4g91xwavnab143a31ca3i8hrqgzh6qz9w6"))
556 (modules '((guix build utils)))
557 (snippet
558 '(begin
559 ;; Remove pre-compiled .pyc files from source.
560 (for-each delete-file (find-files "bin" "\\.pyc$"))
561 #t))))
562 (build-system python-build-system)
563 (inputs
8394619b 564 (list python2-pygame python2-pygtk))
3450bb81
NG
565 (arguments
566 `(#:tests? #f ;no test
567 #:python ,python-2
568 #:phases
569 (modify-phases %standard-phases
570 (delete 'build) ;no setup.py
571 (replace 'install
572 (lambda* (#:key outputs #:allow-other-keys)
573 (let* ((out (assoc-ref outputs "out"))
574 (share (string-append out "/share"))
575 (data (string-append share "/omnitux")))
576 ;; Install documentation.
577 (let ((doc (string-append share "/doc/" ,name "-" ,version)))
578 (for-each (lambda (f) (install-file f doc))
579 '("LICENSE.txt" "README.txt")))
580 ;; Install data.
581 (install-file "omnitux.sh" data)
582 (for-each (lambda (d)
583 (copy-recursively d (string-append data "/" d)))
584 '("bin" "data"))
585 ;; Install the launcher.
586 (let* ((bin (string-append out "/bin"))
587 (script (string-append bin "/omnitux"))
2dffe476
LC
588 (bash (search-input-file %build-inputs "/bin/bash"))
589 (python (search-input-file %build-inputs
590 "/bin/python2")))
3450bb81
NG
591 (mkdir-p bin)
592 (with-output-to-file script
593 (lambda ()
594 (format #t "#!~a~%" bash)
595 (format #t
596 "cd ~a; ~a menu.py~%"
597 (string-append data "/bin")
598 python)))
599 (chmod script #o755))
600 ;; Install icon and desktop file.
601 (let ((pixmaps (string-append share "/pixmaps")))
602 (install-file "data/default/icons/Omnitux_logo.svg" pixmaps))
603 (let ((apps (string-append out "/share/applications")))
604 (mkdir-p apps)
605 (with-output-to-file (string-append apps "/omnitux.desktop")
606 (lambda _
607 (format #t
608 "[Desktop Entry]~@
609 Name=Omnitux~@
610 GenericName=Omnitux
611 Comment=An educational game based on multimedia elements.~@
612 Comment[fr]=Un jeu ludo-éducatif basé sur des éléments multimédias.~@
613 Exec=~a/bin/omnitux~@
614 Type=Application~@
615 Categories=Game;Education;~@
616 Terminal=false~@
617 Icon=Omnitux_logo.svg~@"
618 out))))
619 #t))))))
620 (home-page "http://omnitux.sourceforge.net/")
621 (synopsis "Educational activities based on multimedia elements")
622 (description "The project aims to provide various educational
623activities around multimedia elements (images, sounds, texts). Types
624of activities include:
625@itemize
626@item associations,
627@item items to place on a map or a schema,
628@item counting activities,
629@item puzzles,
630@item card faces to remember,
631@item find differences between two pictures,
632@item ...
633@end itemize
634
635Activities are available in English, French, German, Polish,
636Portuguese, Spanish and Italian.")
637 ;; Project's license is GPL3+, but multimedia elements are
638 ;; released under various licenses.
639 (license (list license:gpl3+
640 license:gpl2+
641 license:cc-by-sa2.0
642 license:cc-by-sa3.0
643 license:public-domain))))
644
52e7295f
NG
645(define-public fet
646 (package
647 (name "fet")
c3931a54 648 (version "6.2.2")
3e4cf41b
NG
649 (source
650 (origin
651 (method url-fetch)
e85ccc8b
LC
652 (uri (let ((directory "https://www.lalescu.ro/liviu/fet/download/")
653 (base (string-append "fet-" version ".tar.bz2")))
654 (list (string-append directory base)
655 (string-append directory "old/" base))))
3e4cf41b 656 (sha256
c3931a54 657 (base32 "1x8m543n88iqprh4zccx1zcfm20balmh0h6syrbv03cszmkvfw07"))))
52e7295f
NG
658 (build-system gnu-build-system)
659 (arguments
660 `(#:phases
661 (modify-phases %standard-phases
662 (add-after 'unpack 'fix-hardcoded-directories
663 (lambda* (#:key outputs #:allow-other-keys)
664 (substitute* (list "fet.pro"
665 "src/src.pro"
666 "src/src-cl.pro"
667 "src/interface/fet.cpp")
28604cdc 668 (("/usr") (assoc-ref outputs "out")))))
52e7295f
NG
669 (replace 'configure
670 (lambda _ (invoke "qmake" "fet.pro"))))))
671 (inputs
8394619b 672 (list qtbase))
52e7295f
NG
673 (home-page "https://www.lalescu.ro/liviu/fet/")
674 (synopsis "Timetabling software")
a5e47130
NG
675 (description
676 "FET is a program for automatically scheduling the timetable of a school,
677high-school or university. It uses a fast and efficient timetabling
678algorithm.
52e7295f 679
a5e47130
NG
680Usually, FET is able to solve a complicated timetable in maximum 5-20 minutes.
681For extremely difficult timetables, it may take a longer time, a matter of
682hours.")
52e7295f
NG
683 (license license:agpl3+)))
684
3f19b268
EF
685(define-public klavaro
686 (package
687 (name "klavaro")
1f34f8db 688 (version "3.13")
3f19b268
EF
689 (source
690 (origin
691 (method url-fetch)
692 (uri (string-append "mirror://sourceforge/klavaro/klavaro-"
693 version ".tar.bz2"))
694 (sha256
1f34f8db 695 (base32 "0z6c3lqikk50mkz3ipm93l48qj7b98lxyip8y6ndg9y9k0z0n878"))))
3f19b268
EF
696 (build-system gnu-build-system)
697 (native-inputs
8394619b 698 (list intltool pkg-config))
3f19b268 699 (inputs
8394619b 700 (list cairo curl gtk+ gtkdatabox pango))
3f19b268
EF
701 (home-page "https://klavaro.sourceforge.io/en/index.html")
702 (synopsis "Touch typing tutor")
703 (description
704 "Klavaro is a simple tutor to teach correct typing, almost independently of
705language and very flexible regarding to new or unknown keyboard layouts.")
706 (license license:gpl3+)))
d2c0a7a2
EF
707
708(define-public ktouch
709 (package
710 (name "ktouch")
a1093d73 711 (version "20.12.1")
d2c0a7a2
EF
712 (source
713 (origin
714 (method url-fetch)
224d30d0 715 (uri (string-append "mirror://kde/stable/release-service/"
d2c0a7a2
EF
716 version "/src/ktouch-" version ".tar.xz"))
717 (sha256
a1093d73 718 (base32 "10lm2p8w26c9n6lhvw3301myfss0dq7hl7rawzb3hsy1lqvmvdib"))))
7d796d80 719 (build-system qt-build-system)
d2c0a7a2 720 (native-inputs
8394619b 721 (list extra-cmake-modules kdoctools pkg-config))
d2c0a7a2 722 (inputs
8394619b
LC
723 (list kcmutils
724 kcompletion
725 kconfig
726 kconfigwidgets
727 kcoreaddons
728 kdeclarative
729 ki18n
730 kiconthemes
731 kitemviews
732 kqtquickcharts
733 ktextwidgets
734 kwidgetsaddons
735 kwindowsystem
736 kxmlgui
737 libxcb
738 libxkbfile
739 qtbase-5
740 qtdeclarative
741 qtgraphicaleffects
742 qtquickcontrols2
743 qtx11extras
744 qtxmlpatterns))
d2c0a7a2
EF
745 (home-page "https://edu.kde.org/ktouch/")
746 (synopsis "Touch typing tutor")
747 (description
748 "KTouch is an aid for learning how to type with speed and accuracy. It
749provides a sample text to type and indicates which fingers should be used for
750each key. A collection of lessons are included for a wide range of different
751languages and keyboard layouts, and typing statistics are used to dynamically
752adjust the level of difficulty.")
753 (license license:gpl2)))
34208bf5 754
a68cca64 755(define-public kanatest
756 ;; Latest release tarball is 0.4.8, which is really old and does not build
757 ;; commit on sourceforge are not tagged, we take the latest
758 (let ((commit "860e790a35f547cc96669f805d371a5ba3d8daff")
759 (revision "0"))
760 (package
761 (name "kanatest")
762 (version (git-version "0.4.10" revision commit))
763 (source
764 (origin
765 (method git-fetch)
766 (uri (git-reference
767 (url "https://git.code.sf.net/p/kanatest/code")
768 (commit commit)))
769 (file-name (git-file-name name version))
770 (sha256
771 (base32 "0dz63m9p4ggzw0yb309qmgnl664qb5q268vaa3i9v0i8qsl66d78"))))
772 (build-system gnu-build-system)
773 (native-inputs
e3196755
LC
774 (list gettext-minimal ; for msgfmt
775 pkg-config))
a68cca64 776 (inputs
8394619b 777 (list libxml2 gtk+))
a68cca64 778 (home-page "https://kanatest.sourceforge.io/")
779 (synopsis "Hiragana and Katakana simple flashcard tool")
780 (description "Kanatest is a Japanese kana (Hiragana and Katakana) simple
781flashcard tool.
782
783During test the Kanatest displays randomly selected kana char (respecting mode
784and lesson) and waits for user answer expected as romaji equivalent. This
785process continues until all questions will be answered or all questions will
786be answered correctly (depends on options). At the end of test a short info
787about drilling time and correctness ratio is displayed. The results are
788stored and user can review his performance in any time.")
789 (license license:gpl2+))))
790
8534c949
RS
791(define-public anki
792 (package
793 (name "anki")
794 ;; Later versions have dependencies on npm packages not yet in Guix.
795 (version "2.1.16")
796 (source
797 (origin
798 (method url-fetch)
799 (uri (string-append "https://apps.ankiweb.net/downloads/archive/anki-"
800 version "-source.tgz"))
801 (sha256
880a3165
RS
802 (base32 "1gfr51rnllkyzli73p4r51h5ypzfa3m7lic3m3rzpywmqwrxs07k"))
803 (patches (search-patches "anki-mpv-args.patch"))))
8534c949
RS
804 (build-system gnu-build-system)
805 (arguments
806 `(#:make-flags (list (string-append "PREFIX=" %output))
807 #:tests? #f ;no check target
808 #:modules ((guix build gnu-build-system)
809 (guix build utils)
810 (ice-9 match))
811 #:phases
812 (modify-phases %standard-phases
a81a6449
TGR
813 (add-after 'unpack 'disable-update-check
814 ;; Don't ‘phone home’ unasked to check for updates.
815 (lambda _
816 (substitute* "aqt/update.py"
817 (("requests\\.post")
818 "throw.an.exception.instead"))
819 #t))
8534c949
RS
820 (delete 'configure) ;no configure script
821 (add-after 'install 'wrap
822 (lambda* (#:key inputs outputs #:allow-other-keys)
823 (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
824 ;; List of paths to the site-packages directories of Python
825 ;; library inputs.
826 (site-packages
827 (map (lambda (pyinput)
828 (string-append
829 (cdr pyinput)
830 "/lib/python"
831 ;; Calculate the python version to avoid breaking
832 ;; with future 3.X releases.
833 ,(version-major+minor
834 (package-version python-wrapper))
835 "/site-packages"))
836 (filter (match-lambda
837 ((label . _)
838 (string-prefix? "python-" label)))
839 inputs)))
840 (qtwebengineprocess
d468a03a
LC
841 (search-input-file inputs
842 "lib/qt5/libexec/QtWebEngineProcess")))
8534c949
RS
843 ;; The program fails to find the QtWebEngineProcess program, so
844 ;; we set QTWEBENGINEPROCESS_PATH to help it. PYTHONPATH is
845 ;; wrapped to avoid declaring Python libraries as propagated
846 ;; inputs.
847 (for-each (lambda (program)
848 (wrap-program program
849 `("QTWEBENGINEPROCESS_PATH" =
850 (,qtwebengineprocess))
880a3165
RS
851 `("PATH" prefix (,(string-append
852 (assoc-ref inputs "mpv")
853 "/bin")))
d42245d4 854 `("GUIX_PYTHONPATH" = ,site-packages)))
8534c949
RS
855 (find-files bin ".")))
856 #t)))))
857 (native-inputs
8394619b 858 (list xdg-utils))
8534c949
RS
859 (inputs
860 `(("lame" ,lame)
861 ("mpv" ,mpv)
862 ("python" ,python-wrapper)
863 ("python-beautifulsoup4" ,python-beautifulsoup4)
864 ("python-decorator" ,python-decorator)
865 ("python-distro" ,python-distro)
866 ("python-jsonschema" ,python-jsonschema)
867 ("python-markdown" ,python-markdown)
868 ("python-pyaudio" ,python-pyaudio)
869 ;; `python-pyqtwebengine' must precede `python-pyqt' in PYTHONPATH.
870 ("python-pyqtwebengine" ,python-pyqtwebengine)
871 ("python-pyqt" ,python-pyqt)
872 ("python-requests" ,python-requests)
873 ("python-send2trash" ,python-send2trash)
874 ("python-sip" ,python-sip)
875 ;; `qtwebengine' is included in `pyqtwebengine', included here for easy
876 ;; wrapping.
877 ("qtwebengine" ,qtwebengine)))
878 (home-page "https://apps.ankiweb.net/")
879 (synopsis "Powerful, intelligent flash cards")
880 (description "Anki is a program which makes remembering things
881easy. Because it's a lot more efficient than traditional study
882methods, you can either greatly decrease your time spent studying, or
883greatly increase the amount you learn.
884
885Anyone who needs to remember things in their daily life can benefit
886from Anki. Since it is content-agnostic and supports images, audio,
887videos and scientific markup (via LaTeX), the possibilities are
888endless. For example:
889@itemize
890@item Learning a language
891@item Studying for medical and law exams
892@item Memorizing people's names and faces
893@item Brushing up on geography
894@item Mastering long poems
895@item Even practicing guitar chords!
896@end itemize")
897 (license license:agpl3+)))
898
34208bf5
NG
899(define-public t4k-common
900 (package
901 (name "t4k-common")
902 (version "0.1.1")
903 (source
904 (origin
905 (method git-fetch)
906 (uri (git-reference
907 (url "https://github.com/tux4kids/t4kcommon")
908 (commit (string-append "upstream/" version))))
909 (file-name (git-file-name name version))
910 (sha256
911 (base32 "13q02xpmps9qg8zrzzy2gzv4a6afgi28lxk4z242j780v0gphchp"))
4dd62947
EF
912 (patches (search-patches "t4k-common-libpng16.patch"))
913 (modules '((guix build utils)))
914 (snippet
915 `(begin
916 (substitute* "src/t4k_common.h"
917 (("char wrapped_lines") "extern char wrapped_lines"))
918 #t))))
34208bf5
NG
919 (build-system cmake-build-system)
920 (arguments
921 `(#:tests? #f ;FIXME: cannot find how to run tests
922 #:phases
923 (modify-phases %standard-phases
924 (add-after 'set-paths 'set-sdl-paths
925 (lambda* (#:key inputs #:allow-other-keys)
bf182596
LC
926 (setenv "CPATH"
927 (string-append
928 (search-input-directory inputs "/include/SDL")
929 ":" (or (getenv "CPATH") "")))))
34208bf5
NG
930 (add-after 'unpack 'fix-andika-font-path
931 (lambda* (#:key inputs #:allow-other-keys)
932 (substitute* "src/t4k_sdl.c"
933 (("(/usr/share/.*?)/AndikaDesRevG\\.ttf")
934 (string-append (assoc-ref inputs "font-andika")
935 "/share/fonts/truetype")))
936 #t)))))
937 (native-inputs
8394619b 938 (list pkg-config))
34208bf5
NG
939 (inputs
940 `(("font-andika" ,font-sil-andika)
941 ("libpng" ,libpng)
942 ("librsvg" ,librsvg)
943 ("libxml2" ,libxml2)
944 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net sdl-pango)))))
945 (home-page "https://github.com/tux4kids/t4kcommon")
946 (synopsis "Library of code shared between TuxMath and TuxType")
947 (description "Tux4Kids-Common is a library of code shared between
948TuxMath and TuxType.")
949 (license license:gpl3+)))
8baaf51f
NG
950
951(define-public tuxmath
952 (package
953 (name "tuxmath")
954 (version "2.0.3")
955 (source
956 (origin
957 (method git-fetch)
958 (uri (git-reference
959 (url "https://github.com/tux4kids/tuxmath")
960 (commit (string-append "upstream/" version))))
961 (file-name (git-file-name name version))
962 (sha256
963 (base32 "1f1pz83w6d3mbik2h6xavfxmk5apxlngxbkh80x0m55lhniwkdxv"))
964 (modules '((guix build utils)))
965 ;; Unbundle fonts.
966 (snippet
967 `(begin
e428e989
EF
968 ;; Remove duplicate definition.
969 (substitute* "src/menu_lan.c"
970 (("lan_player_type.*MAX_CLIENTS\\];") ""))
8baaf51f
NG
971 (for-each delete-file (find-files "data/fonts" "\\.ttf$"))
972 #t))))
973 (build-system gnu-build-system)
974 (arguments
975 `(#:tests? #f ;no test
976 #:phases
977 (modify-phases %standard-phases
978 (add-after 'set-paths 'set-sdl-paths
979 (lambda* (#:key inputs #:allow-other-keys)
980 (setenv "CPATH"
bf182596
LC
981 (string-append
982 (search-input-directory inputs "/include/SDL")
983 ":"
984 (or (getenv "CPATH") "")))))
8baaf51f
NG
985 (add-after 'install 'install-desktop-file
986 (lambda* (#:key outputs #:allow-other-keys)
987 (let* ((out (assoc-ref outputs "out"))
988 (apps (string-append out "/share/applications"))
989 (pixmaps (string-append out "/share/pixmaps")))
990 (install-file "tuxmath.desktop" apps)
991 (for-each (lambda (f) (install-file f pixmaps))
992 (find-files "data/images/icons/"
993 "tuxmath\\.(png|ico|svg)$"))
994 #t))))))
995 (native-inputs
8394619b 996 (list pkg-config))
8baaf51f
NG
997 (inputs
998 `(("librsvg" ,librsvg)
999 ("libxml2" ,libxml2)
1000 ("sdl" ,(sdl-union (list sdl sdl-image sdl-mixer sdl-net sdl-pango)))
1001 ("t4k-common" ,t4k-common)))
1002 (home-page "https://github.com/tux4kids/tuxmath")
1003 (synopsis "Educational math tutorial game")
1004 (description "@emph{Tux, of Math Command} is an educational math
1005tutorial game starring Tux, the Linux penguin, in which you play the
1006part of Commander Tux, as he defends his friends from an attack of
1007math equations. Comets are crashing towards the friendly penguins in
1008their igloos, and you must destroy the comets by solving their
1009equations.
1010
1011TuxMath also includes Factoroids, a game that gives practice in
1012factoring numbers and simplifying fractions, as well as zapping rocks
1013floating through space.")
1014 (license license:gpl3+)))
7adf6f1b 1015
3055d64b 1016(define-public libeb
1017 (package
1018 (name "libeb")
1019 (version "4.4.3")
1020 (source
1021 (origin
1022 (method url-fetch)
1023 (uri
1024 (string-append "ftp://ftp.sra.co.jp/pub/misc/eb/eb-" version ".tar.bz2"))
1025 (sha256
1026 (base32
1027 "0psbdzirazfnn02hp3gsx7xxss9f1brv4ywp6a15ihvggjki1rxb"))))
1028 (build-system gnu-build-system)
1029 (native-inputs ; Required for building docs
8394619b 1030 (list perl))
3055d64b 1031 (inputs
8394619b 1032 (list zlib))
3055d64b 1033 (synopsis "C library for accessing Japanese CD-ROM books")
1034 (description "The EB library is a library for accessing CD-ROM
1035books, which are a common way to distribute electronic dictionaries in
1036Japan. It supports the EB, EBG, EBXA, EBXA-C, S-EBXA and EPWING
1037formats.")
1038 ;; FIXME: I cannot find a real home page
1039 (home-page "https://sra.co.jp/")
1040 (license license:bsd-3)))
1041
17d26c43 1042(define-public qolibri
1043 (package
1044 (name "qolibri")
1045 (version "2.1.4")
1046 (source
1047 (origin
1048 (method git-fetch)
1049 (uri (git-reference
1050 (url"https://github.com/ludios/qolibri")
1051 (commit version)))
1052 (file-name (git-file-name name version))
1053 (sha256
1054 (base32 "066y7jcq9vg6hnvn7qxckzhd1qkgfzpzhw69nw5psm43qbaca8lg"))))
1055 (build-system qt-build-system)
1056 (arguments
1057 '(#:tests? #f)) ; no test target
1058 (native-inputs
8394619b 1059 (list qttools))
17d26c43 1060 (inputs
8394619b
LC
1061 (list libeb
1062 qtbase-5
1063 qtmultimedia
1064 qtquickcontrols2
1065 qtdeclarative
1066 qtwebchannel
1067 qtwebengine
1068 zlib))
17d26c43 1069 (synopsis "EPWING dictionary reader")
1070 (description "qolibri is a dictionary viewer for the EPWING dictionary
1071format. Most monolingual Japanese dictionaries can only be found in the
1072EPWING format.")
1073 (home-page "https://github.com/ludios/qolibri")
1074 (license license:gpl2)))
1075
7adf6f1b 1076(define-public mdk
1077 (package
1078 (name "mdk")
1975baae 1079 (version "1.3.0")
7adf6f1b 1080 (source
40541eaa
EF
1081 (origin
1082 (method url-fetch)
1083 (uri (string-append "mirror://gnu/mdk/v" version "/mdk-"
1084 version ".tar.gz"))
1085 (sha256
7adf6f1b 1086 (base32
1975baae 1087 "0bhk3c82kyp8167h71vdpbcr852h5blpnwggcswqqwvvykbms7lb"))))
40541eaa 1088 (build-system gnu-build-system)
7adf6f1b 1089 (arguments
1090 `(#:configure-flags (list "--enable-gui=yes" "-with-readline=yes")))
1091 (native-inputs
8394619b 1092 (list flex intltool pkg-config))
40541eaa 1093 (inputs
8394619b
LC
1094 (list glib
1095 gtk+
1096 libglade
1097 ncurses
1098 pango
1099 readline))
1975baae 1100 (home-page "https://www.gnu.org/software/mdk/manual/")
7adf6f1b 1101 (synopsis "Virtual development environment for Knuth's MIX")
1102 (description
1103 "GNU MDK is the Mix Development Kit, an emulation of the pedagogical
1104computer MIX and its assembly language MIXAL. MIX has a virtual CPU with
1105standard features such as registers, memory cells, an overflow toggle,
1106comparison flags, input-output devices, and a set of binary instructions.
1107The package includes a compiler, a virtual machine, a GUI for the virtual
1108machine, and more.")
1109 (license license:gpl3+)))
648ae621
JK
1110
1111(define-public exercism
1112 (package
1113 (name "exercism")
1114 (version "3.0.13")
1115 (source
1116 (origin
1117 (method git-fetch)
1118 (uri (git-reference
1119 (url "https://github.com/exercism/cli")
1120 (commit (string-append "v" version))))
1121 (file-name (git-file-name name version))
1122 (sha256
1123 (base32
1124 "17gvz9a0sn4p36hf4l77bxhhfipf4x998iay31layqwbnzmb4xy7"))
1125 (patches (search-patches "exercism-disable-self-update.patch"))))
1126 (build-system go-build-system)
1127 (arguments
1128 `(#:import-path "github.com/exercism/cli/exercism"
4bc71b4e
JK
1129 #:unpack-path "github.com/exercism/cli"
1130 #:install-source? #f))
648ae621
JK
1131 (inputs
1132 `(("github.com/blang/semver" ,go-github-com-blang-semver)
1133 ("github.com/spf13/cobra" ,go-github-com-spf13-cobra)
1134 ("github.com/spf13/pflag" ,go-github-com-spf13-pflag)
1135 ("github.com/spf13/viper" ,go-github-com-spf13-viper)
1136 ("golang.org/x/net" ,go-golang-org-x-net)
1137 ("golang.org/x/text" ,go-golang-org-x-text)))
1138 (home-page "https://exercism.io")
1139 (synopsis "Mentored learning for programming languages")
1140 (description "Commandline client for exercism.io, a free service providing
1141mentored learning for programming languages.")
1142 (license license:expat)))