123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- ;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
- ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
- ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
- ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
- ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
- ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
- ;;;
- ;;; This file is part of GNU Guix.
- ;;;
- ;;; GNU Guix is free software; you can redistribute it and/or modify it
- ;;; under the terms of the GNU General Public License as published by
- ;;; the Free Software Foundation; either version 3 of the License, or (at
- ;;; your option) any later version.
- ;;;
- ;;; GNU Guix is distributed in the hope that it will be useful, but
- ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
- ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;;; GNU General Public License for more details.
- ;;;
- ;;; You should have received a copy of the GNU General Public License
- ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
- (define-module (gnu packages education)
- #:use-module (ice-9 regex)
- #:use-module (gnu packages)
- #:use-module (gnu packages base)
- #:use-module (gnu packages bash)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages freedesktop)
- #:use-module (gnu packages gettext)
- #:use-module (gnu packages glib)
- #:use-module (gnu packages gnome)
- #:use-module (gnu packages gtk)
- #:use-module (gnu packages javascript)
- #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
- #:use-module (gnu packages perl)
- #:use-module (gnu packages pkg-config)
- #:use-module (gnu packages python)
- #:use-module (gnu packages qt)
- #:use-module (gnu packages sdl)
- #:use-module (gnu packages sqlite)
- #:use-module (gnu packages texinfo)
- #:use-module (gnu packages xorg)
- #:use-module (gnu packages xml)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix packages)
- #:use-module (guix download)
- #:use-module (guix git-download)
- #:use-module (guix svn-download)
- #:use-module (guix utils)
- #:use-module (guix build-system cmake)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system trivial)
- #:use-module (srfi srfi-1))
- (define-public gcompris
- (package
- (name "gcompris")
- (version "17.05")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://gcompris.net/download/gtk/src/gcompris-"
- version ".tar.bz2"))
- (sha256
- (base32
- "18y483alb4r4vfmh80nnl0pah5gv0b8frcm6l1drb9njn5xlcpgc"))))
- (build-system gnu-build-system)
- (arguments
- `(#:configure-flags
- ;; Use SDL mixer because otherwise GCompris would need an old version
- ;; of Gstreamer.
- (list "--enable-sdlmixer"
- "LDFLAGS=-lgmodule-2.0")
- #:phases
- (modify-phases %standard-phases
- (add-after 'set-paths 'set-sdl-paths
- (lambda* (#:key inputs #:allow-other-keys)
- (setenv "CPATH"
- (string-append (assoc-ref inputs "sdl-mixer")
- "/include/SDL"))
- #t)))))
- (inputs
- `(("gtk+" ,gtk+-2)
- ("librsvg" ,librsvg)
- ("libxml2" ,libxml2)
- ("sdl-mixer" ,sdl-mixer)
- ("sqlite" ,sqlite)
- ("glib:bin" ,glib)
- ("python" ,python)))
- (native-inputs
- `(("intltool" ,intltool)
- ("texinfo" ,texinfo)
- ("texi2html" ,texi2html)
- ("glib:bin" ,glib "bin")
- ("pkg-config" ,pkg-config)))
- (home-page "http://gcompris.net")
- (synopsis "Educational software suite")
- (description "GCompris is an educational software suite comprising of
- numerous activities for children aged 2 to 10. Some of the activities are
- game orientated, but nonetheless still educational. Below you can find a list
- of categories with some of the activities available in that category.
- @enumerate
- @item computer discovery: keyboard, mouse, different mouse gestures, ...
- @item arithmetic: table memory, enumeration, double entry table, mirror image, ...
- @item science: the canal lock, the water cycle, the submarine, electric simulation ...
- @item geography: place the country on the map
- @item games: chess, memory, connect 4, oware, sudoku ...
- @item reading: reading practice
- @item other: learn to tell time, puzzle of famous paintings, vector drawing, cartoon making, ...
- @end enumerate
- ")
- (license license:gpl3+)))
- (define-public gcompris-qt
- (package
- (name "gcompris-qt")
- (version "0.95")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "https://gcompris.net/download/qt/src/gcompris-qt-"
- version ".tar.xz"))
- (sha256
- (base32
- "1aaijjx2b7k1cyx59jhs64hlp1sppw1faa81qxl5lxc79vifrlrl"))))
- (build-system cmake-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-before 'check 'start-xorg-server
- (lambda* (#:key inputs #:allow-other-keys)
- ;; The test suite requires a running X server.
- (system (string-append (assoc-ref inputs "xorg-server")
- "/bin/Xvfb :1 &"))
- (setenv "DISPLAY" ":1")
- #t))
- (add-after 'install 'wrap-executable
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (wrap-program (string-append out "/bin/gcompris-qt")
- `("QT_PLUGIN_PATH" ":" prefix
- ,(map (lambda (label)
- (string-append (assoc-ref inputs label)
- "/lib/qt5/plugins"))
- '("qtbase" "qtdeclarative" "qtmultimedia" "qtsvg")))
- `("QML2_IMPORT_PATH" ":" prefix
- ,(map (lambda (label)
- (string-append (assoc-ref inputs label)
- "/lib/qt5/qml"))
- '("qtdeclarative" "qtgraphicaleffects"
- "qtmultimedia" "qtquickcontrols"))))
- #t))))
- #:configure-flags (list "-DQML_BOX2D_MODULE=disabled"
- "-DBUILD_TESTING=TRUE")))
- (native-inputs
- `(("extra-cmake-modules" ,extra-cmake-modules)
- ("gettext" ,gettext-minimal)
- ("perl" ,perl)
- ("qttools" ,qttools)
- ("xorg-server" ,xorg-server)))
- (inputs
- `(("python-2" ,python-2)
- ("qtbase" ,qtbase)
- ("qtdeclarative" ,qtdeclarative)
- ("qtgraphicaleffects" ,qtgraphicaleffects)
- ("qtmultimedia" ,qtmultimedia)
- ("qtquickcontrols" ,qtquickcontrols)
- ("qtsensors" ,qtsensors)
- ("qtsvg" ,qtsvg)
- ("qtxmlpatterns" ,qtxmlpatterns)))
- (home-page "https://gcompris.net/index-en.html")
- (synopsis "Educational games for small children")
- (description
- "Gcompris offers a large collection of educational games for small
- children, designed to be a unified interface to integrate more educational
- games. Language-oriented games contain vocabulary, sounds, and voices for
- many different languages.
- Currently available boards include:
- @enumerate
- @item learning how to use a mouse and keyboard
- @item learning simple arithmetic
- @item learning how to read an analog clock
- @item recognize letters after hearing their names
- @item reading practice
- @item small games (memory games, jigsaw puzzles, ...)
- @end enumerate\n")
- (license license:gpl3+)))
- (define-public tipp10
- (package
- (name "tipp10")
- (version "2.1.0")
- (source (origin
- (method url-fetch)
- ;; guix download is not able to handle the download links on the
- ;; home-page, which use '<meta http-equiv="refresh" …>'
- (uri (string-append "mirror://debian/pool/main/"
- "t/tipp10/tipp10_2.1.0.orig.tar.gz"))
- (sha256
- (base32
- "0d387b404j88gsv6kv0rb7wxr23v5g5vl6s5l7602x8pxf7slbbx"))
- (patches (search-patches "tipp10-fix-compiling.patch"
- "tipp10-remove-license-code.patch"))))
- (build-system cmake-build-system)
- (arguments
- `(#:tests? #f ; packages has no tests
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'disable-new-version-check
- (lambda _
- ;; Make new version check to default to false.
- ;; TODO: Remove the checkbox from the dialog and the check itself
- (substitute* '("widget/settingspages.cpp" "widget/mainwindow.cpp")
- (("settings.value(\"check_new_version\", true)")
- "settings.value(\"check_new_version\", false)"))
- #t))
- (replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; Make program honor $PREFIX
- (substitute* "tipp10.pro"
- (("\\.path = /usr/") (string-append ".path = " out "/")))
- (substitute* "def/defines.h"
- (("\"/usr/") (string-append "\"" out "/")))
- ;; Recreate Makefile
- (invoke "qmake")))))))
- (inputs
- `(("qt4" ,qt-4)
- ("sqlite" ,sqlite)))
- (home-page "https://www.tipp10.com/")
- (synopsis "Touch typing tutor")
- (description "Tipp10 is a touch typing tutor. The ingenious thing about
- the software is its intelligence feature: characters that are mistyped are
- repeated more frequently. Beginners will find their way around right away so
- they can start practicing without a hitch.
- Useful support functions and an extensive progress tracker, topical lessons
- and the ability to create your own practice lessons make learning to type
- easy.")
- (license license:gpl2)))
- (define-public snap
- (package
- (name "snap")
- (version "4.2.2.9")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/jmoenig/Snap.git")
- (commit version)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "07qyhh4f8gr1fqyvxa2i6lkzaaa0vl12yzllgp81rdil8z8bi976"))))
- (build-system trivial-build-system)
- (arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let* ((source (assoc-ref %build-inputs "source"))
- (out (assoc-ref %outputs "out"))
- (share (string-append out "/share/snap")))
- (copy-recursively source share)
- ;; Replace the sole minified file in the package.
- (with-directory-excursion (string-append share "/src")
- (delete-file "FileSaver.min.js")
- (symlink (string-append (assoc-ref %build-inputs "js-filesaver")
- "/share/javascript/FileSaver.min.js")
- "FileSaver.min.js"))
- ;; Create a "snap" executable.
- (let* ((bin (string-append out "/bin"))
- (script (string-append bin "/snap"))
- (snap (string-append share "/snap.html"))
- (bash (string-append (assoc-ref %build-inputs "bash")
- "/bin/sh"))
- (xdg-open (string-append (assoc-ref %build-inputs "xdg-utils")
- "/bin/xdg-open")))
- (mkdir-p bin)
- (call-with-output-file script
- (lambda (port)
- (format port "#!~a\n~a '~a'" bash xdg-open snap)))
- (chmod script #o555)))
- #t)))
- (inputs
- `(("bash" ,bash-minimal)
- ("js-filesaver" ,js-filesaver)
- ("xdg-utils" ,xdg-utils)))
- (home-page "https://snap.berkeley.edu")
- (synopsis "Visual, blocks based programming language")
- (description "Snap! (formerly BYOB) is a visual, drag-and-drop
- programming language. It is an extended reimplementation of Scratch (a
- project of the Lifelong Kindergarten Group at the MIT Media Lab) that
- allows you to Build Your Own Blocks. It also features first class
- lists, first class procedures, and continuations. These added
- capabilities make it suitable for a serious introduction to computer
- science for high school or college students.
- This package provides a @command{snap} executable calling @command{xdg-open}
- to open the application in a web browser, for offline usage.")
- (license license:agpl3+)))
|