~ruther/guix-local

b893f1aec35b879169f80bc9461fac21907fbaf4 — Ludovic Courtès 10 years ago 66e4f01
services: nscd-service: Fit everything into <nscd-configuration>.

* gnu/services/base.scm (<nscd-configuration>)[glibc, name-services]:
  New fields.
  (nscd-service): Remove #:glibc and #:name-services parameters.  Adjust
  body to take those from CONFIG.
* gnu/services/desktop.scm (%desktop-services): Adjust accordingly.
* doc/guix.texi (Base Services): Adjust accordingly.
  (Name Service Switch): Adjust example.
3 files changed, 28 insertions(+), 18 deletions(-)

M doc/guix.texi
M gnu/services/base.scm
M gnu/services/desktop.scm
M doc/guix.texi => doc/guix.texi +13 -7
@@ 5795,11 5795,9 @@ The Mingetty package to use.
@cindex nscd
@deffn {Scheme Procedure} nscd-service [@var{config}] [#:glibc glibc] @
                [#:name-services '()]
Return a service that runs libc's name service cache daemon (nscd) with
the given @var{config}---an @code{<nscd-configuration>} object.
Optionally, @code{#:name-services} is a list of packages that provide
name service switch (NSS) modules needed by nscd.  @xref{Name Service
Switch}, for an example.
Return a service that runs libc's name service cache daemon (nscd) with the
given @var{config}---an @code{<nscd-configuration>} object.  @xref{Name
Service Switch}, for an example.
@end deffn

@defvr {Scheme Variable} %nscd-default-configuration


@@ 5814,6 5812,14 @@ configuration.

@table @asis

@item @code{name-services} (default: @code{'()})
List of packages denoting @dfn{name services} that must be visible to
the nscd---e.g., @code{(list @var{nss-mdns})}.

@item @code{glibc} (default: @var{glibc})
Package object denoting the GNU C Library providing the @command{nscd}
command.

@item @code{log-file} (default: @code{"/var/log/nscd.log"})
Name of nscd's log file.  This is where debugging output goes when
@code{debug-level} is strictly positive.


@@ 6542,8 6548,8 @@ configuration file:
  ;; about nss-mdns.
  (map (lambda (service)
         (if (member 'nscd (service-provision service))
             (nscd-service (nscd-configuration)
                           #:name-services (list nss-mdns))
             (nscd-service (nscd-configuration
                             (name-services (list nss-mdns))))
             service))
       %base-services))
@end example

M gnu/services/base.scm => gnu/services/base.scm +13 -9
@@ 412,7 412,11 @@ other things."
               (default 0))
  ;; TODO: See nscd.conf in glibc for other options to add.
  (caches     nscd-configuration-caches           ;list of <nscd-cache>
              (default %nscd-default-caches)))
              (default %nscd-default-caches))
  (name-services nscd-configuration-name-services ;list of <packages>
                 (default '()))
  (glibc      nscd-configuration-glibc            ;<package>
              (default (canonical-package glibc))))

(define-record-type* <nscd-cache> nscd-cache make-nscd-cache
  nscd-cache?


@@ 502,13 506,10 @@ other things."
                                (string-concatenate
                                 (map cache->config caches)))))))

(define* (nscd-service #:optional (config %nscd-default-configuration)
                       #:key (glibc (canonical-package glibc))
                       (name-services '()))
(define* (nscd-service #:optional (config %nscd-default-configuration))
  "Return a service that runs libc's name service cache daemon (nscd) with the
given @var{config}---an @code{<nscd-configuration>} object.  Optionally,
@code{#:name-services} is a list of packages that provide name service switch
 (NSS) modules needed by nscd.  @xref{Name Service Switch}, for an example."
given @var{config}---an @code{<nscd-configuration>} object.  @xref{Name
Service Switch}, for an example."
  (let ((nscd.conf (nscd.conf-file config)))
    (service
     (documentation "Run libc's name service cache daemon (nscd).")


@@ 521,7 522,8 @@ given @var{config}---an @code{<nscd-configuration>} object.  Optionally,
                   (mkdir-p "/var/db/nscd")))     ;for the persistent cache

     (start #~(make-forkexec-constructor
               (list (string-append #$glibc "/sbin/nscd")
               (list (string-append #$(nscd-configuration-glibc config)
                                    "/sbin/nscd")
                     "-f" #$nscd.conf "--foreground")

               #:environment-variables


@@ 529,7 531,9 @@ given @var{config}---an @code{<nscd-configuration>} object.  Optionally,
                                    (string-join
                                     (map (lambda (dir)
                                            (string-append dir "/lib"))
                                          (list #$@name-services))
                                          (list
                                           #$@(nscd-configuration-name-services
                                               config)))
                                     ":")))))
     (stop #~(make-kill-destructor))


M gnu/services/desktop.scm => gnu/services/desktop.scm +2 -2
@@ 594,8 594,8 @@ when they log out."
                (cond
                 ;; Provide an nscd ready to use nss-mdns.
                 ((memq 'nscd (service-provision service))
                  (nscd-service (nscd-configuration)
                                #:name-services (list nss-mdns)))
                  (nscd-service (nscd-configuration
                                 (name-services (list nss-mdns)))))

                 ;; Add more rules to udev-service.
                 ;;