me
/
guix
Archived
1
0
Fork 0

gnu: Add anki.

* gnu/packages/education.scm (anki): New variable.
master
Robert Smith 2020-02-05 14:59:50 +01:00 committed by Nicolas Goaziou
parent fd0dd2b2dc
commit 8534c9491d
No known key found for this signature in database
GPG Key ID: DA00B4F048E92F2D
1 changed files with 103 additions and 0 deletions

View File

@ -5,6 +5,7 @@
;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -24,6 +25,7 @@
(define-module (gnu packages education) (define-module (gnu packages education)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages audio)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
@ -40,14 +42,18 @@
#:use-module (gnu packages javascript) #:use-module (gnu packages javascript)
#:use-module (gnu packages kde) #:use-module (gnu packages kde)
#:use-module (gnu packages kde-frameworks) ; extra-cmake-modules #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
#:use-module (gnu packages mp3)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #: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 qt)
#:use-module (gnu packages sdl) #:use-module (gnu packages sdl)
#:use-module (gnu packages sqlite) #:use-module (gnu packages sqlite)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
@ -715,6 +721,103 @@ languages and keyboard layouts, and typing statistics are used to dynamically
adjust the level of difficulty.") adjust the level of difficulty.")
(license license:gpl2))) (license license:gpl2)))
(define-public anki
(package
(name "anki")
;; Later versions have dependencies on npm packages not yet in Guix.
(version "2.1.16")
(source
(origin
(method url-fetch)
(uri (string-append "https://apps.ankiweb.net/downloads/archive/anki-"
version "-source.tgz"))
(sha256
(base32 "1gfr51rnllkyzli73p4r51h5ypzfa3m7lic3m3rzpywmqwrxs07k"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list (string-append "PREFIX=" %output))
#:tests? #f ;no check target
#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 match))
#:phases
(modify-phases %standard-phases
(delete 'configure) ;no configure script
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin"))
;; List of paths to the site-packages directories of Python
;; library inputs.
(site-packages
(map (lambda (pyinput)
(string-append
(cdr pyinput)
"/lib/python"
;; Calculate the python version to avoid breaking
;; with future 3.X releases.
,(version-major+minor
(package-version python-wrapper))
"/site-packages"))
(filter (match-lambda
((label . _)
(string-prefix? "python-" label)))
inputs)))
(qtwebengineprocess
(string-append (assoc-ref inputs "qtwebengine")
"/lib/qt5/libexec/QtWebEngineProcess")))
;; The program fails to find the QtWebEngineProcess program, so
;; we set QTWEBENGINEPROCESS_PATH to help it. PYTHONPATH is
;; wrapped to avoid declaring Python libraries as propagated
;; inputs.
(for-each (lambda (program)
(wrap-program program
`("QTWEBENGINEPROCESS_PATH" =
(,qtwebengineprocess))
`("PYTHONPATH" = ,site-packages)))
(find-files bin ".")))
#t)))))
(native-inputs
`(("xdg-utils" ,xdg-utils)))
(inputs
`(("lame" ,lame)
("mpv" ,mpv)
("python" ,python-wrapper)
("python-beautifulsoup4" ,python-beautifulsoup4)
("python-decorator" ,python-decorator)
("python-distro" ,python-distro)
("python-jsonschema" ,python-jsonschema)
("python-markdown" ,python-markdown)
("python-pyaudio" ,python-pyaudio)
;; `python-pyqtwebengine' must precede `python-pyqt' in PYTHONPATH.
("python-pyqtwebengine" ,python-pyqtwebengine)
("python-pyqt" ,python-pyqt)
("python-requests" ,python-requests)
("python-send2trash" ,python-send2trash)
("python-sip" ,python-sip)
;; `qtwebengine' is included in `pyqtwebengine', included here for easy
;; wrapping.
("qtwebengine" ,qtwebengine)))
(home-page "https://apps.ankiweb.net/")
(synopsis "Powerful, intelligent flash cards")
(description "Anki is a program which makes remembering things
easy. Because it's a lot more efficient than traditional study
methods, you can either greatly decrease your time spent studying, or
greatly increase the amount you learn.
Anyone who needs to remember things in their daily life can benefit
from Anki. Since it is content-agnostic and supports images, audio,
videos and scientific markup (via LaTeX), the possibilities are
endless. For example:
@itemize
@item Learning a language
@item Studying for medical and law exams
@item Memorizing people's names and faces
@item Brushing up on geography
@item Mastering long poems
@item Even practicing guitar chords!
@end itemize")
(license license:agpl3+)))
(define-public t4k-common (define-public t4k-common
(package (package
(name "t4k-common") (name "t4k-common")