gnu: Add js-filesaver.
[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>
5c105203 5;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
2614de3c
DM
6;;;
7;;; This file is part of GNU Guix.
8;;;
9;;; GNU Guix is free software; you can redistribute it and/or modify it
10;;; under the terms of the GNU General Public License as published by
11;;; the Free Software Foundation; either version 3 of the License, or (at
12;;; your option) any later version.
13;;;
14;;; GNU Guix is distributed in the hope that it will be useful, but
15;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17;;; GNU General Public License for more details.
18;;;
19;;; You should have received a copy of the GNU General Public License
20;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22(define-module (gnu packages education)
23 #:use-module (ice-9 regex)
24 #:use-module (gnu packages)
25 #:use-module (gnu packages qt)
26 #:use-module (gnu packages compression)
0ea179fd 27 #:use-module (gnu packages databases)
2614de3c 28 #:use-module (gnu packages gettext)
0ea179fd
RW
29 #:use-module (gnu packages glib)
30 #:use-module (gnu packages gnome)
31 #:use-module (gnu packages gtk)
b27aacbf 32 #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
2614de3c 33 #:use-module (gnu packages perl)
0ea179fd
RW
34 #:use-module (gnu packages pkg-config)
35 #:use-module (gnu packages python)
36 #:use-module (gnu packages sdl)
37 #:use-module (gnu packages texinfo)
38 #:use-module (gnu packages xml)
2614de3c
DM
39 #:use-module ((guix licenses) #:prefix license:)
40 #:use-module (guix packages)
41 #:use-module (guix download)
42 #:use-module (guix svn-download)
43 #:use-module (guix utils)
44 #:use-module (guix build-system gnu)
45 #:use-module (guix build-system cmake)
46 #:use-module (srfi srfi-1))
47
0ea179fd
RW
48(define-public gcompris
49 (package
50 (name "gcompris")
cdc827b3 51 (version "17.05")
0ea179fd
RW
52 (source (origin
53 (method url-fetch)
54 (uri (string-append "http://gcompris.net/download/gtk/src/gcompris-"
55 version ".tar.bz2"))
56 (sha256
57 (base32
cdc827b3 58 "18y483alb4r4vfmh80nnl0pah5gv0b8frcm6l1drb9njn5xlcpgc"))))
0ea179fd
RW
59 (build-system gnu-build-system)
60 (arguments
61 `(#:configure-flags
62 ;; Use SDL mixer because otherwise GCompris would need an old version
63 ;; of Gstreamer.
64 (list "--enable-sdlmixer"
65 "LDFLAGS=-lgmodule-2.0")
66 #:phases
67 (modify-phases %standard-phases
68 (add-after 'set-paths 'set-sdl-paths
69 (lambda* (#:key inputs #:allow-other-keys)
70 (setenv "CPATH"
71 (string-append (assoc-ref inputs "sdl-mixer")
72 "/include/SDL"))
73 #t)))))
74 (inputs
75 `(("gtk+" ,gtk+-2)
76 ("librsvg" ,librsvg)
77 ("libxml2" ,libxml2)
78 ("sdl-mixer" ,sdl-mixer)
79 ("sqlite" ,sqlite)
80 ("glib:bin" ,glib)
81 ("python" ,python)))
82 (native-inputs
83 `(("intltool" ,intltool)
84 ("texinfo" ,texinfo)
85 ("texi2html" ,texi2html)
86 ("glib:bin" ,glib "bin")
87 ("pkg-config" ,pkg-config)))
88 (home-page "http://gcompris.net")
89 (synopsis "Educational software suite")
90 (description "GCompris is an educational software suite comprising of
91numerous activities for children aged 2 to 10. Some of the activities are
92game orientated, but nonetheless still educational. Below you can find a list
93of categories with some of the activities available in that category.
94
95@enumerate
96@item computer discovery: keyboard, mouse, different mouse gestures, ...
97@item arithmetic: table memory, enumeration, double entry table, mirror image, ...
98@item science: the canal lock, the water cycle, the submarine, electric simulation ...
99@item geography: place the country on the map
100@item games: chess, memory, connect 4, oware, sudoku ...
101@item reading: reading practice
102@item other: learn to tell time, puzzle of famous paintings, vector drawing, cartoon making, ...
103@end enumerate
104")
105 (license license:gpl3+)))
b84257c0 106
b27aacbf
EF
107(define-public gcompris-qt
108 (package
109 (name "gcompris-qt")
5c105203 110 (version "0.90")
b27aacbf
EF
111 (source
112 (origin
113 (method url-fetch)
114 (uri (string-append
5c105203 115 "https://gcompris.net/download/qt/src/gcompris-qt-"
b27aacbf
EF
116 version ".tar.xz"))
117 (sha256
118 (base32
5c105203 119 "1i5adxnhig849qxwi3c4v7r84q6agx1zxkd69fh4y7lcmq2qiaza"))))
b27aacbf
EF
120 (build-system cmake-build-system)
121 (arguments
5c105203
EF
122 `(#:phases
123 (modify-phases %standard-phases
124 (add-after 'install 'wrap-executable
125 (lambda* (#:key inputs outputs #:allow-other-keys)
126 (let ((out (assoc-ref outputs "out")))
127 (wrap-program (string-append out "/bin/gcompris-qt")
128 `("QT_PLUGIN_PATH" ":" prefix
129 ,(map (lambda (label)
130 (string-append (assoc-ref inputs label)
131 "/lib/qt5/plugins"))
132 '("qtbase" "qtdeclarative" "qtmultimedia" "qtsvg")))
133 `("QML2_IMPORT_PATH" ":" prefix
134 ,(map (lambda (label)
135 (string-append (assoc-ref inputs label)
136 "/lib/qt5/qml"))
137 '("qtdeclarative" "qtgraphicaleffects"
138 "qtmultimedia" "qtquickcontrols"))))
139 #t))))
140 #:configure-flags (list "-DQML_BOX2D_MODULE=disabled")
b27aacbf
EF
141 #:tests? #f)) ; no test target
142 (native-inputs
143 `(("extra-cmake-modules" ,extra-cmake-modules)
144 ("gettext" ,gettext-minimal)
5c105203
EF
145 ("perl" ,perl)
146 ("qttools" ,qttools)))
b27aacbf
EF
147 (inputs
148 `(("python-2" ,python-2)
5c105203
EF
149 ("qtbase" ,qtbase)
150 ("qtdeclarative" ,qtdeclarative)
151 ("qtgraphicaleffects" ,qtgraphicaleffects)
152 ("qtmultimedia" ,qtmultimedia)
153 ("qtquickcontrols" ,qtquickcontrols)
154 ("qtsensors" ,qtsensors)
155 ("qtsvg" ,qtsvg)
156 ("qtxmlpatterns" ,qtxmlpatterns)))
157 (home-page "https://gcompris.net/index-en.html")
b27aacbf
EF
158 (synopsis "Educational games for small children")
159 (description
160 "Gcompris offers a large collection of educational games for small
161children, designed to be a unified interface to integrate more educational
162games. Language-oriented games contain vocabulary, sounds, and voices for
163many different languages.
164Currently available boards include:
165@enumerate
166@item learning how to use a mouse and keyboard
167@item learning simple arithmetic
168@item learning how to read an analog clock
169@item recognize letters after hearing their names
170@item reading practice
171@item small games (memory games, jigsaw puzzles, ...)
172@end enumerate\n")
173 (license license:gpl3+)))
174
b84257c0
HG
175(define-public tipp10
176 (package
177 (name "tipp10")
178 (version "2.1.0")
179 (source (origin
180 (method url-fetch)
181 ;; guix download is not able to handle the download links on the
182 ;; home-page, which use '<meta http-equiv="refresh" …>'
183 (uri (string-append "mirror://debian/pool/main/"
184 "t/tipp10/tipp10_2.1.0.orig.tar.gz"))
185 (sha256
186 (base32
187 "0d387b404j88gsv6kv0rb7wxr23v5g5vl6s5l7602x8pxf7slbbx"))
188 (patches (search-patches "tipp10-fix-compiling.patch"
189 "tipp10-remove-license-code.patch"))))
190 (build-system cmake-build-system)
191 (arguments
192 `(#:tests? #f ; packages has no tests
193 #:phases
194 (modify-phases %standard-phases
195 (add-after 'unpack 'disable-new-version-check
7cc98473
RW
196 (lambda _
197 ;; Make new version check to default to false.
198 ;; TODO: Remove the checkbox from the dialog and the check itself
199 (substitute* '("widget/settingspages.cpp" "widget/mainwindow.cpp")
200 (("settings.value(\"check_new_version\", true)")
201 "settings.value(\"check_new_version\", false)"))
202 #t))
b84257c0 203 (replace 'configure
7cc98473
RW
204 (lambda* (#:key outputs #:allow-other-keys)
205 (let ((out (assoc-ref outputs "out")))
206 ;; Make program honor $PREFIX
207 (substitute* "tipp10.pro"
208 (("\\.path = /usr/") (string-append ".path = " out "/")))
209 (substitute* "def/defines.h"
210 (("\"/usr/") (string-append "\"" out "/")))
211 ;; Recreate Makefile
212 (zero? (system* "qmake"))))))))
b84257c0
HG
213 (inputs
214 `(("qt4" ,qt-4)
215 ("sqlite" ,sqlite)))
216 (home-page "https://www.tipp10.com/")
217 (synopsis "Touch typing tutor")
9e39ac41
RW
218 (description "Tipp10 is a touch typing tutor. The ingenious thing about
219the software is its intelligence feature: characters that are mistyped are
220repeated more frequently. Beginners will find their way around right away so
221they can start practicing without a hitch.
b84257c0
HG
222
223Useful support functions and an extensive progress tracker, topical lessons
224and the ability to create your own practice lessons make learning to type
9e39ac41 225easy.")
b84257c0 226 (license license:gpl2)))