[bug#75063,v2] gnu: dict: Add symbols to help users configure FreeDict with dicod.
Commit Message
* gnu/services/dict.scm: (%dicod-database:freedict): New procedure;
(dicod-freedict-databases): new variable.
* doc/guix.texi: (Dictionary Service): Document them.
Signed-off-by: Runciter <runciter@whispers-vpn.org>
---
doc/guix.texi | 25 +++++++++--
gnu/services/dict.scm | 100 +++++++++++++++++++++++++++++++++++++++++-
2 files changed, 121 insertions(+), 4 deletions(-)
base-commit: 9dc91360fd2e41fb783ab4af341ac60aee2f5d31
@@ -41148,7 +41148,23 @@ Miscellaneous Services
Dictionary of English using the @code{gcide} package.
@end defvar
-The following is an example @code{dicod-service-type} configuration.
+@deffn {Procedure} %dicod-database:freedict dictionary-name
+"Returns a record of type @code{dicod-database} for purpose of configuring a
+database for the FreeDict multilingual dictionary named by the string
+@var{dictionary-name} into a service of type @code{dicod-service-type}."
+@end deffn
+
+@defvar dicod-freedict-databases
+A relatively large list of records of type @code{dicod-database}, made
+available for users who wish to configure all the FreeDict multilingual
+dictionaries provided by the @code{freedict-dictionaries} package into a
+service of type @code{dicod-service-type}.
+@end defvar
+
+The following is an example @code{dicod-service-type} configuration,
+extending a @command{dicod} daemon serving databases for the wordnet and
+gcide dictionaries, as well as a selection of FreeDict multilingual
+dictionaries.
@lisp
(service dicod-service-type
@@ -41159,12 +41175,15 @@ Miscellaneous Services
(module "wordnet")
(options
(list #~(string-append "wnhome=" #$wordnet))))))
- (databases (list
+ (databases (cons*
(dicod-database
(name "wordnet")
(complex? #t)
(handler "wordnet"))
- %dicod-database:gcide))))
+ %dicod-database:gcide
+ (map
+ %dicod-database:freedict
+ '("fra-eng" "eng-fra" "eng-spa" "spa-eng"))))))
@end lisp
@cindex Docker
@@ -2,6 +2,7 @@
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016, 2017, 2018, 2020, 2022, 2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com>
+;;; Copyright © 2024 Runciter <runciter@whispers-vpn.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -40,7 +41,9 @@ (define-module (gnu services dict)
dicod-configuration
dicod-handler
dicod-database
- %dicod-database:gcide))
+ %dicod-database:gcide
+ %dicod-database:freedict
+ dicod-freedict-databases))
;;;
@@ -94,6 +97,101 @@ (define %dicod-database:gcide
(options (list #~(string-append "dbdir=" #$gcide "/share/gcide")
#~(string-append "idxdir=" #$%dicod-gcide-index)))))
+(define (%dicod-database:freedict dictionary-name)
+ "Returns a record of type @code{dicod-database} for purpose of configuring a
+database for the FreeDict multilingual dictionary named by the string
+@var{dictionary-name} into a service of type @code{dicod-service-type}."
+ (dicod-database (name (string-append "freedict-"
+ dictionary-name))
+ (handler "dictorg")
+ (options (list #~(string-append "database="
+ #$freedict-dictionaries
+ "/share/dictd/"
+ #$dictionary-name)))))
+
+(define dicod-freedict-databases
+ (map %dicod-database:freedict (list "afr-deu"
+ "afr-eng"
+ "ara-eng"
+ "bre-fra"
+ "ces-eng"
+ "ckb-kmr"
+ "cym-eng"
+ "dan-eng"
+ "deu-ita"
+ "deu-kur"
+ "deu-nld"
+ "deu-por"
+ "deu-tur"
+ "eng-afr"
+ "eng-ara"
+ "eng-ces"
+ "eng-cym"
+ "eng-dan"
+ "eng-ell"
+ "eng-fra"
+ "eng-gle"
+ "eng-hin"
+ "eng-hrv"
+ "eng-hun"
+ "eng-ita"
+ "eng-lat"
+ "eng-lit"
+ "eng-nld"
+ "eng-pol"
+ "eng-por"
+ "eng-rom"
+ "eng-rus"
+ "eng-spa"
+ "eng-srp"
+ "eng-swh"
+ "eng-tur"
+ "fra-bre"
+ "fra-eng"
+ "fra-nld"
+ "gla-deu"
+ "gle-eng"
+ "gle-pol"
+ "hrv-eng"
+ "hun-eng"
+ "isl-eng"
+ "ita-deu"
+ "ita-eng"
+ "jpn-deu"
+ "jpn-eng"
+ "jpn-fra"
+ "jpn-rus"
+ "kha-deu"
+ "kha-eng"
+ "kur-deu"
+ "kur-eng"
+ "kur-tur"
+ "lat-deu"
+ "lat-eng"
+ "lit-eng"
+ "mkd-bul"
+ "nld-deu"
+ "nld-eng"
+ "nld-fra"
+ "nno-nob"
+ "oci-cat"
+ "pol-gle"
+ "por-deu"
+ "por-eng"
+ "san-deu"
+ "slk-eng"
+ "slv-eng"
+ "spa-ast"
+ "spa-eng"
+ "spa-por"
+ "srp-eng"
+ "swe-eng"
+ "swh-eng"
+ "swh-pol"
+ "tur-deu"
+ "tur-eng"
+ "wol-fra")))
+
(define %dicod-accounts
(list (user-group
(name "dicod")