;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Danny Milosavljevic ;;; Copyright © 2016 Ricardo Wurmus ;;; Copyright © 2016 Nicolas Goaziou ;;; ;;; 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 . (define-module (gnu packages education) #:use-module (gnu packages) #:use-module (gnu packages qt) #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages sdl) #:use-module (gnu packages smalltalk) #:use-module (gnu packages texinfo) #:use-module (gnu packages xml) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix svn-download) #:use-module (guix utils) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (srfi srfi-26)) (define-public stellarium (package (name "stellarium") (version "0.14.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/stellarium/" "Stellarium-sources/" version "/stellarium-" version ".tar.gz")) (sha256 (base32 "1xxil0rv61zc08znfv83cpsc47y1gjl2f3njhz0pn5zd8jpaa15a")))) (build-system cmake-build-system) (inputs `(("qtbase" ,qtbase) ("zlib" ,zlib) ("qtserialport" ,qtserialport) ("qtscript" ,qtscript) ("gettext" ,gnu-gettext))) (native-inputs `(("qtbase" ,qtbase) ;Qt MOC is needed at compile time ("qttools" ,qttools) ("perl" ,perl))) ;for 'pod2man' (arguments `(#:test-target "tests" #:phases (modify-phases %standard-phases (add-before 'check 'set-offscreen-display (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") (setenv "HOME" "/tmp") #t))))) (home-page "http://www.stellarium.org/") (synopsis "3D sky viewer") (description "Stellarium is a planetarium. It shows a realistic sky in 3D, just like what you see with the naked eye, binoculars, or a telescope. It can be used to control telescopes over a serial port for tracking celestial objects.") (license license:gpl2+))) (define-public gcompris (package (name "gcompris") (version "15.10") (source (origin (method url-fetch) (uri (string-append "http://gcompris.net/download/gtk/src/gcompris-" version ".tar.bz2")) (sha256 (base32 "0f7wa27vvpn9ansp2aald1pajqlx5d51mvj07ba503yvl7i77fka")))) (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 scratch (package (name "scratch") (version "1.4.0.7") (source (origin (method url-fetch) (uri (string-append "https://download.scratch.mit.edu/" "scratch-" version ".src.tar.gz")) (sha256 (base32 "0gka4acblxd3q0bc58pzjdr6k6fx6qww5vj724nvmwnfiqkqjkdr")) (patches (search-patches "scratch-desktopfile-semicolon.patch" "scratch-use-squeak-plugins.patch")))) (inputs `(("cairo" ,cairo) ("pango" ,pango) ("shared-mime-info" ,shared-mime-info))) (native-inputs `(("pkg-config" ,pkg-config))) (propagated-inputs `(("squeak-vm" ,squeak-vm))) (build-system glib-or-gtk-build-system) (arguments `(#:tests? #f ;No check target #:modules ((srfi srfi-26) ,@%glib-or-gtk-build-system-modules) #:phases (modify-phases %standard-phases (delete 'configure) (delete 'build) (add-after 'unpack 'fix-executable (lambda* (#:key outputs inputs #:allow-other-keys) ;; Fix hard-coded paths to VM in the shell script. Also ;; make it executable. (let* ((scratch "src/scratch") (out (assoc-ref outputs "out")) (vm (assoc-ref inputs "squeak-vm")) (share (string-append out "/share/scratch"))) (chmod scratch #o755) (substitute* scratch (("^VM=.*$") (string-append "VM=\"" vm "/bin/squeak\"\n")) (("^IMAGE=.*$") (string-append "IMAGE=\"" share "/Scratch.image\"\n"))) #t))) (replace 'install (lambda* (#:key outputs inputs #:allow-other-keys) ;; There is no "install" target in the Makefile, so we ;; roll our own. (let* ((out (assoc-ref outputs "out")) (applications (string-append out "/share/applications")) (bin (string-append out "/bin")) (man (string-append out "/share/man/man1")) (mime (string-append out "/share/mime/packages")) (share (string-append out "/share/scratch"))) (for-each (cut copy-recursively <> share) '("Help" "locale" "Media" "Projects")) (for-each (cut install-file <> share) '("Scratch.image" "Scratch.ini")) (install-file "src/scratch" bin) (install-file "src/man/scratch.1.gz" man) (install-file "src/scratch.xml" mime) (install-file "src/scratch.desktop" applications) (let ((hicolor (string-append out "/share/icons/hicolor"))) (with-directory-excursion "src/icons/32x32" (install-file "scratch.xpm" (string-append out "/share/pixmaps"))) (with-directory-excursion "src/icons/48x48" (install-file "scratch.png" (string-append hicolor "/48x48/apps")) (install-file "gnome-mime-application-x-scratch-project.png" (string-append hicolor "/48x48/mimetypes"))) (with-directory-excursion "src/icons/128x128" (install-file "scratch.png" (string-append hicolor "/128x128/apps")) (install-file "gnome-mime-application-x-scratch-project.png" (string-append hicolor "/128x128/mimetypes")))) #t)))))) (synopsis "Easy to use programming environment for ages 8 and up") (description "Scratch is an easy, interactive, collaborative programming environment designed for creation of interactive stories, animations, games, music, and art -- and sharing these on the web. Scratch is designed to help young people (ages 8 and up) develop 21st century learning skills. As they create Scratch projects, young people learn important mathematical and computational ideas, while also gaining a deeper understanding of the process of design.") (home-page "http://scratch.mit.edu") ;; Source is GPL2 licensed, Plugins are MIT licensed and Artwork (sprites, ;; backgrounds, sounds...) is CC-BY-SA3.0 licensed. (license (list license:gpl2 license:x11 license:cc-by-sa3.0))))