~ruther/guix-local

a47bbf6965283562e086393f357e5519379bccef — Runciter 1 year, 5 months ago 4fa122b
services: dico: Add symbols to help users configure FreeDict with dicod.

* gnu/services/dict.scm: (dicod-freedict-database): New procedure;
(%dicod-databases:freedict): new variable.
* doc/guix.texi (Dictionary Service): Document them.

Signed-off-by: Runciter <runciter@whispers-vpn.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Change-Id: Id5b20e235b988953a66e0344872d1fa165c4c773
2 files changed, 123 insertions(+), 4 deletions(-)

M doc/guix.texi
M gnu/services/dict.scm
M doc/guix.texi => doc/guix.texi +24 -3
@@ 41514,7 41514,25 @@ A @code{<dicod-database>} object serving the GNU Collaborative International
Dictionary of English using the @code{gcide} package.
@end defvar

The following is an example @code{dicod-service-type} configuration.
@deffn {Procedure} dicod-freedict-database dictionary-name
Returns a record of type @code{dicod-database} for purpose of
configuring a database for the FreeDict multilingual dictionary named by
@var{dictionary-name}, a string such as @code{"kur-eng"} for the
Kurdish-to-English dictionary, into a service of type
@code{dicod-service-type}.
@end deffn

@defvar %dicod-databases:freedict
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


@@ 41525,12 41543,15 @@ The following is an example @code{dicod-service-type} configuration.
                      (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-freedict-database
                       '("fra-eng" "eng-fra" "eng-spa" "spa-eng"))))))
@end lisp

@cindex Docker

M gnu/services/dict.scm => gnu/services/dict.scm +99 -1
@@ 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 @@
            dicod-configuration
            dicod-handler
            dicod-database
            %dicod-database:gcide))
            %dicod-database:gcide
            dicod-freedict-database
            %dicod-databases:freedict))


;;;


@@ 94,6 97,101 @@
   (options (list #~(string-append "dbdir=" #$gcide "/share/gcide")
                  #~(string-append "idxdir=" #$%dicod-gcide-index)))))

(define (dicod-freedict-database 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-databases:freedict
  (map dicod-freedict-database (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")