nss: Add '%mdns-host-lookup-nss'.

* gnu/system/nss.scm (%mdns-host-lookup-nss): New variable.
* doc/guix.texi (Name Service Switch): Document it.
This commit is contained in:
Ludovic Courtès 2015-05-08 14:59:00 +02:00
parent 6b888efff6
commit 15137a29c2
2 changed files with 42 additions and 5 deletions

View file

@ -5180,6 +5180,10 @@ for host names ending in @code{.local}:
(name "mdns")))))
@end example
Don't worry: the @code{%mdns-host-lookup-nss} variable (see below)
contains this configuration, so you won't have to type it if all you
want is to have @code{.local} host lookup working.
Note that, in this case, in addition to setting the
@code{name-service-switch} of the @code{operating-system} declaration,
@code{nscd-service} must be told where to find the @code{nss-mdns}
@ -5207,6 +5211,21 @@ configuration file:
@noindent
@dots{} and then refer to @var{%my-base-services} instead of
@var{%base-services} in the @code{operating-system} declaration.
Lastly, this relies on the availability of the Avahi service
(@pxref{Desktop Services, @code{avahi-service}}).
For convenience, the following variables provide typical NSS
configurations.
@defvr {Scheme Variable} %default-nss
This is the default name service switch configuration, a
@code{name-service-switch} object.
@end defvr
@defvr {Scheme Variable} %mdns-host-lookup-nss
This is the name service switch configuration with support for host name
lookup over multicast DNS (mDNS) for host names ending in @code{.local}.
@end defvr
The reference for name service switch configuration is given below. It
is a direct mapping of the C library's configuration file format, so
@ -5217,11 +5236,6 @@ not only of adding this warm parenthetic feel that we like, but also
static checks: you'll know about syntax errors and typos as soon as you
run @command{guix system}.
@defvr {Scheme Variable} %default-nss
This is the default name service switch configuration, a
@code{name-service-switch} object.
@end defvr
@deftp {Data Type} name-service-switch
This is the data type representation the configuration of libc's name

View file

@ -29,6 +29,8 @@ (define-module (gnu system nss)
lookup-specification
%default-nss
%mdns-host-lookup-nss
%files
%compat
%dns
@ -148,6 +150,27 @@ (define %default-nss
;; Default NSS configuration.
(name-service-switch))
(define %mdns-host-lookup-nss
(name-service-switch
(hosts (list %files ;first, check /etc/hosts
;; If the above did not succeed, try with 'mdns_minimal'.
(name-service
(name "mdns_minimal")
;; 'mdns_minimal' is authoritative for '.local'. When it
;; returns "not found", no need to try the next methods.
(reaction (lookup-specification
(not-found => return))))
;; Then fall back to DNS.
(name-service
(name "dns"))
;; Finally, try with the "full" 'mdns'.
(name-service
(name "mdns"))))))
;;;
;;; Serialization.