@node Emacs Interface @section Emacs Interface @cindex Emacs GNU Guix comes with a visual user interface for GNU@tie{}Emacs, known as ``guix.el''. It can be used for routine package management tasks, pretty much like the @command{guix package} command (@pxref{Invoking guix package}). Specifically, ``guix.el'' makes it easy to: @itemize @item browse and display packages and generations; @item search, install, upgrade and remove packages; @item display packages from previous generations; @item do some other useful things. @end itemize @menu * Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}. * Usage: Emacs Usage. Using the interface. * Configuration: Emacs Configuration. Configuring the interface. * Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names. @end menu @node Emacs Initial Setup @subsection Initial Setup On the Guix System Distribution (@pxref{GNU Distribution}), ``guix.el'' is ready to use, provided Guix is installed system-wide, which is the case by default. So if that is what you're using, you can happily skip this section and read about the fun stuff. If you're not yet a happy user of GSD, a little bit of setup is needed. To be able to use ``guix.el'', you need to install the following packages: @itemize @item @uref{http://www.gnu.org/software/emacs/, GNU Emacs}, version 24.3 or later; @item @uref{http://nongnu.org/geiser/, Geiser}, version 0.3 or later: it is used for interacting with the Guile process. @end itemize When it is done, add the following into your init file (@pxref{Init File,,, emacs, The GNU Emacs Manual}): @example (require 'guix-init nil t) @end example However there is a chance that @code{load-path} of your Emacs does not contain a directory with ``guix.el'' (usually it is @file{/usr/share/emacs/site-lisp/}). In that case you need to add it before requiring (@pxref{Lisp Libraries,,, emacs, The GNU Emacs Manual}): @example (add-to-list 'load-path "/path/to
;;; 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-2023 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018-2024 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Prafulla Giri <pratheblackdiamond@gmail.com> ;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2022 Luis Felipe López Acevedo <luis.felipe.la@protonmail.com> ;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2024 Luis Higino <luishenriquegh2701@gmail.com> ;;; ;;; 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 audio) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages curl) #:use-module (gnu packages databases) #:use-module (gnu packages django) #:use-module (gnu packages flex) #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages game-development) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages golang) #:use-module (gnu packages golang-build) #:use-module (gnu packages golang-check) #:use-module (gnu packages golang-web) #:use-module (gnu packages golang-xyz) #:use-module (gnu packages gtk) #:use-module (gnu packages gstreamer) #:use-module (gnu packages image) #:use-module (gnu packages javascript) #:use-module (gnu packages kde) #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules #:use-module (gnu packages linux) #:use-module (gnu packages mp3) #:use-module (gnu packages ncurses) #:use-module (gnu packages pdf) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages sdl) #:use-module (gnu packages sqlite) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages video) #:use-module (gnu packages xiph) #:use-module (gnu packages xorg) #:use-module (gnu packages xml) #:use-module (guix gexp) #: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 go) #:use-module (guix build-system python) #:use-module (guix build-system qt) #:use-module (guix build-system trivial) #:use-module (srfi srfi-1)) (define-public cf-tool (package (name "cf-tool") (version "1.0.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/xalanq/cf-tool") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0ad2mljjg4pr8jjk9i1asnld16xi1wdfnh25drngm3c590cmrnfj")) (patches (search-patches "cf-tool-add-languages.patch")) (modules '((guix build utils))) ;; Remove assets and vendorized dependencies from checkout (snippet '(begin (delete-file-recursively "assets") (delete-file-recursively "vendor"))))) (build-system go-build-system) (arguments (list #:install-source? #f #:import-path "github.com/xalanq/cf-tool" #:phases #~(modify-phases %standard-phases (add-after 'install 'add-alternate-name (lambda* _ (let ((bin (string-append #$output "/bin"))) (symlink (string-append bin "/cf-tool") (string-append bin "/cf")))))))) (native-inputs (list go-github-com-docopt-docopt-go go-github-com-fatih-color go-github-com-k0kubun-go-ansi go-github-com-mitchellh-go-homedir go-github-com-olekukonko-tablewriter go-github-com-puerkitobio-goquery go-github-com-sergi-go-diff go-github-com-shirou-gopsutil go-github-com-skratchdot-open-golang go-golang-org-x-crypto go-golang-org-x-term)) (home-page "https://github.com/xalanq/cf-tool") (synopsis "Command-line interface tool for @url{https://codeforces.com, Codeforces}") (description "Codeforces Tool is a command-line interface tool for @url{https://codeforces.com,Codeforces}. Its features include: @itemize @item support Contests, Gym, Groups and acmsguru @item support all programming languages in Codeforces @item submit codes @item watch submissions' status dynamically @item fetch problems' samples @item compile and test locally @item clone all codes of someone @item generate codes from the specified template (including timestamp, author, etc.) @item list problems' stats of one contest @item use default web browser to open problems' pages, standings' page, etc. @item setup a network proxy and setup a mirror host @end itemize") (license license:expat))) (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") #:make-flags (list "CFLAGS=-fcommon") #:phases (modify-phases %standard-phases (add-after 'set-paths 'set-sdl-paths (lambda* (#:key inputs #:allow-other-keys) (setenv "CPATH" (string-append (search-input-directory inputs "include/SDL") ":" (or (getenv "CPATH") "")))))))) (inputs `(("gtk+" ,gtk+-2) ("librsvg" ,(librsvg-for-system)) ("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 "https://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 "4.1") (source (origin (method url-fetch) (uri (string-append "mirror://kde/stable/gcompris/qt/src/gcompris-qt-" version ".tar.xz")) (sha256 (base32 "1186ba3vn59fqdpgbvnvxqm8a3b7ginmw1sb3m5fr2az40xiqg9z")))) (build-system qt-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 "Xvfb :1 &") (setenv "DISPLAY" ":1") ;; The test suite wants to write to /homeless-shelter (setenv "HOME" (getcwd))))) #:configure-flags (list "-DQML_BOX2D_MODULE=disabled" "-DBUILD_TESTING=TRUE"))) (native-inputs (list extra-cmake-modules gettext-minimal kdoctools perl qttools-5 xorg-server-for-tests)) (inputs (list openssl python-wrapper qtbase-5 qtcharts qtdeclarative-5 qtgraphicaleffects qtmultimedia-5 qtquickcontrols2-5 qtsensors-5 qtsvg-5)) (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") (license (list license:silofl1.1 ; bundled fonts license:agpl3+)))) (define-public gotypist (let ((revision "0") (commit "03f8618f8e23acdaa94cda3bcf197da520db8dd4")) (package (name "gotypist") (version (git-version "0.0.0" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/KappaDistributive/gotypist") (commit commit))) (file-name (git-file-name name version)) (sha256 (base32 "0sjndaspqfzffjxz388m384wqz5lzbiw4cwpi688k5aq7n05jh0f")))) (build-system go-build-system) (arguments `(#:unpack-path "github.com/KappaDistributive/gotypist" #:import-path "github.com/KappaDistributive/gotypist/v1" #:install-source? #f #:phases (modify-phases %standard-phases