home: services: Add dicod.
* gnu/home/services/dict.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * gnu/services/dict.scm (<dicod-configuration>)[home-service?]: New field. (dicod-shepherd-service): Do not map /dev/log when 'home-service?' is true. Remove 'user-processes' requirement when 'home-service?' is true. (dicod-shepherd-service): Set #:user and #:group to #f when 'home-service?' is true. * doc/guix.texi (Miscellaneous Home Services): New node. (Miscellaneous Services): Add cross-reference.
parent
1c30d5a6bf
commit
1ce3424e22
|
@ -450,6 +450,7 @@ Home Services
|
||||||
* Mail: Mail Home Services. Services for managing mail.
|
* Mail: Mail Home Services. Services for managing mail.
|
||||||
* Messaging: Messaging Home Services. Services for managing messaging.
|
* Messaging: Messaging Home Services. Services for managing messaging.
|
||||||
* Media: Media Home Services. Services for managing media.
|
* Media: Media Home Services. Services for managing media.
|
||||||
|
* Miscellaneous: Miscellaneous Home Services. More services.
|
||||||
|
|
||||||
Platforms
|
Platforms
|
||||||
|
|
||||||
|
@ -39082,6 +39083,12 @@ implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
|
||||||
You can add @command{open localhost} to your @file{~/.dico} file to make
|
You can add @command{open localhost} to your @file{~/.dico} file to make
|
||||||
@code{localhost} the default server for @command{dico} client
|
@code{localhost} the default server for @command{dico} client
|
||||||
(@pxref{Initialization File,,, dico, GNU Dico Manual}).
|
(@pxref{Initialization File,,, dico, GNU Dico Manual}).
|
||||||
|
|
||||||
|
@quotation Note
|
||||||
|
This service is also available for Guix Home, where it runs directly
|
||||||
|
with your user privileges (@pxref{Miscellaneous Home Services,
|
||||||
|
@code{home-dicod-service-type}}).
|
||||||
|
@end quotation
|
||||||
@end defvar
|
@end defvar
|
||||||
|
|
||||||
@deftp {Data Type} dicod-configuration
|
@deftp {Data Type} dicod-configuration
|
||||||
|
@ -42972,6 +42979,7 @@ services)}.
|
||||||
* Mail: Mail Home Services. Services for managing mail.
|
* Mail: Mail Home Services. Services for managing mail.
|
||||||
* Messaging: Messaging Home Services. Services for managing messaging.
|
* Messaging: Messaging Home Services. Services for managing messaging.
|
||||||
* Media: Media Home Services. Services for managing media.
|
* Media: Media Home Services. Services for managing media.
|
||||||
|
* Miscellaneous: Miscellaneous Home Services. More services.
|
||||||
@end menu
|
@end menu
|
||||||
@c In addition to that Home Services can provide
|
@c In addition to that Home Services can provide
|
||||||
|
|
||||||
|
@ -44561,6 +44569,43 @@ kodi} for more information.
|
||||||
@end table
|
@end table
|
||||||
@end deftp
|
@end deftp
|
||||||
|
|
||||||
|
@node Miscellaneous Home Services
|
||||||
|
@subsection Miscellaneous Home Services
|
||||||
|
|
||||||
|
This section lists Home services that lack a better place.
|
||||||
|
|
||||||
|
@subsubheading Dictionary Service
|
||||||
|
|
||||||
|
@cindex dictionary service, for Home
|
||||||
|
The @code{(gnu home services dict)} module provides the following service:
|
||||||
|
|
||||||
|
@defvar home-dicod-service-type
|
||||||
|
This is the type of the service that runs the @command{dicod} daemon, an
|
||||||
|
implementation of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
|
||||||
|
|
||||||
|
You can add @command{open localhost} to your @file{~/.dico} file to make
|
||||||
|
@code{localhost} the default server for @command{dico} client
|
||||||
|
(@pxref{Initialization File,,, dico, GNU Dico Manual}).
|
||||||
|
@end defvar
|
||||||
|
|
||||||
|
This service is a direct mapping of the @code{dicod-service-type} system
|
||||||
|
service (@pxref{Miscellaneous Services, Dictionary Service}). You can
|
||||||
|
use it like this:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(service home-dicod-service-type)
|
||||||
|
@end lisp
|
||||||
|
|
||||||
|
You may specify a custom configuration by providing a
|
||||||
|
@code{dicod-configuration} record, exactly like for
|
||||||
|
@code{dicod-service-type}, but wrapping it in @code{for-home}:
|
||||||
|
|
||||||
|
@lisp
|
||||||
|
(service home-dicod-service-type
|
||||||
|
(for-home
|
||||||
|
(dicod-configuration @dots{})))
|
||||||
|
@end lisp
|
||||||
|
|
||||||
@node Invoking guix home
|
@node Invoking guix home
|
||||||
@section Invoking @command{guix home}
|
@section Invoking @command{guix home}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
|
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
;;;
|
||||||
|
;;; 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 home services dict)
|
||||||
|
#:use-module (gnu home services)
|
||||||
|
#:use-module (gnu services)
|
||||||
|
#:use-module (gnu services dict)
|
||||||
|
#:use-module ((gnu system shadow) #:select (account-service-type))
|
||||||
|
#:export (home-dicod-service-type)
|
||||||
|
#:re-export (dicod-configuration))
|
||||||
|
|
||||||
|
(define home-dicod-service-type
|
||||||
|
(service-type
|
||||||
|
(inherit (system->home-service-type
|
||||||
|
(remove-service-extensions dicod-service-type
|
||||||
|
(list account-service-type))))
|
||||||
|
(default-value (for-home (dicod-configuration)))))
|
|
@ -91,6 +91,7 @@ GNU_SYSTEM_MODULES = \
|
||||||
%D%/home.scm \
|
%D%/home.scm \
|
||||||
%D%/home/services.scm \
|
%D%/home/services.scm \
|
||||||
%D%/home/services/desktop.scm \
|
%D%/home/services/desktop.scm \
|
||||||
|
%D%/home/services/dict.scm \
|
||||||
%D%/home/services/symlink-manager.scm \
|
%D%/home/services/symlink-manager.scm \
|
||||||
%D%/home/services/fontutils.scm \
|
%D%/home/services/fontutils.scm \
|
||||||
%D%/home/services/gnupg.scm \
|
%D%/home/services/gnupg.scm \
|
||||||
|
|
|
@ -56,7 +56,9 @@
|
||||||
(handlers dicod-configuration-handlers ;list of <dicod-handler>
|
(handlers dicod-configuration-handlers ;list of <dicod-handler>
|
||||||
(default '()))
|
(default '()))
|
||||||
(databases dicod-configuration-databases ;list of <dicod-database>
|
(databases dicod-configuration-databases ;list of <dicod-database>
|
||||||
(default (list %dicod-database:gcide))))
|
(default (list %dicod-database:gcide)))
|
||||||
|
(home-service? dicod-configuration-home-service? ;boolean
|
||||||
|
(default for-home?) (innate)))
|
||||||
|
|
||||||
(define-record-type* <dicod-handler>
|
(define-record-type* <dicod-handler>
|
||||||
dicod-handler make-dicod-handler
|
dicod-handler make-dicod-handler
|
||||||
|
@ -152,20 +154,26 @@ database {
|
||||||
(define (dicod-shepherd-service config)
|
(define (dicod-shepherd-service config)
|
||||||
(let* ((dicod.conf (dicod-configuration-file config))
|
(let* ((dicod.conf (dicod-configuration-file config))
|
||||||
(interfaces (dicod-configuration-interfaces config))
|
(interfaces (dicod-configuration-interfaces config))
|
||||||
|
(home-service? (dicod-configuration-home-service? config))
|
||||||
|
(mappings `(,@(if home-service?
|
||||||
|
'()
|
||||||
|
(list (file-system-mapping
|
||||||
|
(source "/dev/log")
|
||||||
|
(target source))))
|
||||||
|
,(file-system-mapping
|
||||||
|
(source dicod.conf)
|
||||||
|
(target source))))
|
||||||
(dicod (least-authority-wrapper
|
(dicod (least-authority-wrapper
|
||||||
(file-append (dicod-configuration-dico config)
|
(file-append (dicod-configuration-dico config)
|
||||||
"/bin/dicod")
|
"/bin/dicod")
|
||||||
#:name "dicod"
|
#:name "dicod"
|
||||||
#:mappings (list (file-system-mapping
|
#:mappings mappings
|
||||||
(source "/dev/log")
|
|
||||||
(target source))
|
|
||||||
(file-system-mapping
|
|
||||||
(source dicod.conf)
|
|
||||||
(target source)))
|
|
||||||
#:namespaces (delq 'net %namespaces))))
|
#:namespaces (delq 'net %namespaces))))
|
||||||
(list (shepherd-service
|
(list (shepherd-service
|
||||||
(provision '(dicod))
|
(provision '(dicod))
|
||||||
(requirement '(user-processes))
|
(requirement (if home-service?
|
||||||
|
'()
|
||||||
|
'(user-processes)))
|
||||||
(documentation "Run the dicod daemon.")
|
(documentation "Run the dicod daemon.")
|
||||||
(start #~(make-inetd-constructor
|
(start #~(make-inetd-constructor
|
||||||
(list #$dicod "--inetd" "--foreground"
|
(list #$dicod "--inetd" "--foreground"
|
||||||
|
@ -176,7 +184,8 @@ database {
|
||||||
(car (getaddrinfo interface "dict")))))
|
(car (getaddrinfo interface "dict")))))
|
||||||
'#$interfaces)
|
'#$interfaces)
|
||||||
#:requirements '#$requirement
|
#:requirements '#$requirement
|
||||||
#:user "dicod" #:group "dicod"
|
#:user #$(and (not home-service?) "dicod")
|
||||||
|
#:group #$(and (not home-service?) "dicod")
|
||||||
#:service-name-stem "dicod"))
|
#:service-name-stem "dicod"))
|
||||||
(stop #~(make-inetd-destructor))
|
(stop #~(make-inetd-destructor))
|
||||||
(actions (list (shepherd-configuration-action dicod.conf)))))))
|
(actions (list (shepherd-configuration-action dicod.conf)))))))
|
||||||
|
|
Reference in New Issue