M doc/guix.texi => doc/guix.texi +11 -3
@@ 4319,9 4319,12 @@ the ``message of the day''.
@cindex name service cache daemon
@cindex nscd
-@deffn {Monadic Procedure} nscd-service [@var{config}] [#:glibc glibc]
-Return a service that runs libc's name service cache daemon (nscd) with the
-given @var{config}---an @code{<nscd-configuration>} object.
+@deffn {Monadic 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.
@end deffn
@defvr {Scheme Variable} %nscd-default-configuration
@@ 4753,6 4756,11 @@ associated lookup action.
A string denoting the name service (@pxref{Services in the NSS
configuration,,, libc, The GNU C Library Reference Manual}).
+Note that name services listed here must be visible to nscd. This is
+achieved by passing the @code{#:name-services} argument to
+@code{nscd-service} the list of packages providing the needed name
+services (@pxref{Base Services, @code{nscd-service}}).
+
@item reaction
An action specified using the @code{lookup-specification} macro
(@pxref{Actions in the NSS configuration,,, libc, The GNU C Library
M gnu/services/base.scm => gnu/services/base.scm +14 -3
@@ 492,9 492,12 @@ the ``message of the day''."
(map cache->config caches)))))))
(define* (nscd-service #:optional (config %nscd-default-configuration)
- #:key (glibc (canonical-package glibc)))
+ #:key (glibc (canonical-package 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."
+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."
(mlet %store-monad ((nscd.conf (nscd.conf-file config)))
(return (service
(documentation "Run libc's name service cache daemon (nscd).")
@@ 507,7 510,15 @@ given @var{config}---an @code{<nscd-configuration>} object."
(start #~(make-forkexec-constructor
(list (string-append #$glibc "/sbin/nscd")
- "-f" #$nscd.conf "--foreground")))
+ "-f" #$nscd.conf "--foreground")
+
+ #:environment-variables
+ (list (string-append "LD_LIBRARY_PATH="
+ (string-join
+ (map (lambda (dir)
+ (string-append dir "/lib"))
+ (list #$@name-services))
+ ":")))))
(stop #~(make-kill-destructor))
(respawn? #f)))))