Merge branch 'master' into staging
[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>
b27aacbf 5;;; Copyright © 2017 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")
110 (version "0.70")
111 (source
112 (origin
113 (method url-fetch)
114 (uri (string-append
115 "http://gcompris.net/download/qt/src/gcompris-qt-"
116 version ".tar.xz"))
117 (sha256
118 (base32
119 "01r7i8dmwb2nlfyp0y0mzs8yydmvn5gq7xn1w7g21lysak1mliwa"))))
120 (build-system cmake-build-system)
121 (arguments
122 ;; Qml_box2d is unmaintained and not actually required for building
123 '(#:configure-flags (list "-DQML_BOX2D_MODULE=disabled")
124 #:tests? #f)) ; no test target
125 (native-inputs
126 `(("extra-cmake-modules" ,extra-cmake-modules)
127 ("gettext" ,gettext-minimal)
128 ("perl" ,perl)))
129 (inputs
130 `(("python-2" ,python-2)
131 ("qt" ,qt))) ; Cannot find qtquick at runtime with modular qt.
132 (home-page "http://gcompris.net/index-en.html")
133 (synopsis "Educational games for small children")
134 (description
135 "Gcompris offers a large collection of educational games for small
136children, designed to be a unified interface to integrate more educational
137games. Language-oriented games contain vocabulary, sounds, and voices for
138many different languages.
139Currently available boards include:
140@enumerate
141@item learning how to use a mouse and keyboard
142@item learning simple arithmetic
143@item learning how to read an analog clock
144@item recognize letters after hearing their names
145@item reading practice
146@item small games (memory games, jigsaw puzzles, ...)
147@end enumerate\n")
148 (license license:gpl3+)))
149
b84257c0
HG
150(define-public tipp10
151 (package
152 (name "tipp10")
153 (version "2.1.0")
154 (source (origin
155 (method url-fetch)
156 ;; guix download is not able to handle the download links on the
157 ;; home-page, which use '<meta http-equiv="refresh" …>'
158 (uri (string-append "mirror://debian/pool/main/"
159 "t/tipp10/tipp10_2.1.0.orig.tar.gz"))
160 (sha256
161 (base32
162 "0d387b404j88gsv6kv0rb7wxr23v5g5vl6s5l7602x8pxf7slbbx"))
163 (patches (search-patches "tipp10-fix-compiling.patch"
164 "tipp10-remove-license-code.patch"))))
165 (build-system cmake-build-system)
166 (arguments
167 `(#:tests? #f ; packages has no tests
168 #:phases
169 (modify-phases %standard-phases
170 (add-after 'unpack 'disable-new-version-check
7cc98473
RW
171 (lambda _
172 ;; Make new version check to default to false.
173 ;; TODO: Remove the checkbox from the dialog and the check itself
174 (substitute* '("widget/settingspages.cpp" "widget/mainwindow.cpp")
175 (("settings.value(\"check_new_version\", true)")
176 "settings.value(\"check_new_version\", false)"))
177 #t))
b84257c0 178 (replace 'configure
7cc98473
RW
179 (lambda* (#:key outputs #:allow-other-keys)
180 (let ((out (assoc-ref outputs "out")))
181 ;; Make program honor $PREFIX
182 (substitute* "tipp10.pro"
183 (("\\.path = /usr/") (string-append ".path = " out "/")))
184 (substitute* "def/defines.h"
185 (("\"/usr/") (string-append "\"" out "/")))
186 ;; Recreate Makefile
187 (zero? (system* "qmake"))))))))
b84257c0
HG
188 (inputs
189 `(("qt4" ,qt-4)
190 ("sqlite" ,sqlite)))
191 (home-page "https://www.tipp10.com/")
192 (synopsis "Touch typing tutor")
9e39ac41
RW
193 (description "Tipp10 is a touch typing tutor. The ingenious thing about
194the software is its intelligence feature: characters that are mistyped are
195repeated more frequently. Beginners will find their way around right away so
196they can start practicing without a hitch.
b84257c0
HG
197
198Useful support functions and an extensive progress tracker, topical lessons
199and the ability to create your own practice lessons make learning to type
9e39ac41 200easy.")
b84257c0 201 (license license:gpl2)))