From 4aee6e60033786e1fa09595f116199a17516e64e Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 4 Feb 2015 22:42:38 +0100 Subject: services: nscd-service: Add #:name-services parameter. * gnu/services/base.scm (nscd-service): Add #:name-services parameter. In 'start' field, set LD_LIBRARY_PATH based on #:name-services. * doc/guix.texi (Base Services): Document it. (Name Service Switch): Link to 'nscd-service'. --- doc/guix.texi | 14 +++++++++++--- gnu/services/base.scm | 17 ++++++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index e489d414bc..bd985f956c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -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{} 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{} 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 diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 32eb9035d4..94abef65c8 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -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{} object." +given @var{config}---an @code{} 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{} 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))))) -- cgit v1.2.3