From: Mark H Weaver <mhw@netris.org>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: Name service switch configuration
Date: Wed, 25 Feb 2015 02:37:49 -0500 [thread overview]
Message-ID: <87r3tev3ua.fsf@netris.org> (raw)
In-Reply-To: <87fvalqqva.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Wed, 04 Feb 2015 23:00:25 +0100")
[-- Attachment #1: Type: text/plain, Size: 1365 bytes --]
Hi Ludovic!
ludo@gnu.org (Ludovic Courtès) writes:
> Commit 996ed73 adds support to configure libc’s name service switch
> (NSS). To enable something like nss-mdns (for the resolution of
> ‘.local’ names), one needs two things:
>
> 1. Add this snippet to the ‘operating-system’ declaration:
>
> (name-service-switch (name-service-switch
> (hosts (list %files
> (name-service
> (name "mdns_minimal")
> (reaction (lookup-specification
> (not-found => return))))
> (name-service
> (name "dns"))
> (name-service
> (name "mdns"))))))
>
> 2. Arrange to have ‘nscd-service’ called with:
>
> #:name-services (list nss-mdns)
>
> And that works!
Sounds great, except that it doesn't work for me :-(
I've done as you recommended, and "avahi-browse -avr" successfully shows
names of *.local hosts, but if I try to do name lookups on those names,
they always fail.
I've attached my OS configuration. Any ideas?
Mark
[-- Attachment #2: jojen OS configuration --]
[-- Type: text/plain, Size: 7407 bytes --]
;; GNU Guix operating system configuration for jojen
(use-modules (gnu)
(gnu services)
(guix gexp)
(guix store)
(guix monads))
(use-package-modules base bash admin wicd pulseaudio avahi vim linux)
(use-service-modules xorg avahi dbus networking)
(define (temperature-regulation-service)
(with-monad %store-monad
(return
(service
(documentation "Regulate temperature on an overclocked Libreboot X60.")
(provision '(temperature-regulation))
(requirement '(user-processes))
(start #~(lambda _
(let ((pid (primitive-fork)))
(if (positive? pid)
pid
(let ()
(define (current-temp)
(call-with-input-file
"/sys/class/thermal/thermal_zone0/temp"
read))
(define (set-cpu1-online! online?)
(call-with-output-file
"/sys/devices/system/cpu/cpu1/online"
(lambda (port)
(write (if online? 1 0) port))))
(let loop ()
(let ((temp (current-temp)))
(cond ((< temp 88000) (set-cpu1-online! #t))
((> temp 92000) (set-cpu1-online! #f))))
(sleep 2)
(loop)))))))
(stop #~(make-kill-destructor))
(respawn? #t)))))
(define (powertop-auto-tune-service)
(let ((powertop #~(string-append #$powertop "/sbin/powertop")))
(with-monad %store-monad
(return
(service
(documentation "Run powertop --auto-tune.")
(provision '(powertop-auto-tune))
(requirement '(user-processes))
(start #~(lambda _
(zero? (system* #$powertop "--auto-tune")))))))))
(define (hdparm-service device)
(let ((hdparm #~(string-append #$hdparm "/sbin/hdparm")))
(with-monad %store-monad
(return
(service
(documentation "Disable power management on drive.")
(provision (list (symbol-append 'hdparm- (string->symbol device))))
(requirement '(user-processes))
(start #~(lambda _
(let ((pid (primitive-fork)))
(if (positive? pid)
pid
(let loop ()
(unless (zero? (system* #$hdparm "-B" "255" #$device))
(format (current-error-port)
"hdparm failed!~%"))
(sleep 15)
(loop))))))
(stop #~(make-kill-destructor))
(respawn? #t))))))
(define (anti-caps-lock-service)
(let ((dumpkeys #~(string-append #$kbd "/bin/dumpkeys"))
(loadkeys #~(string-append #$kbd "/bin/loadkeys"))
(grep #~(string-append #$grep "/bin/grep"))
(sed #~(string-append #$sed "/bin/sed"))
(bash #~(string-append #$bash "/bin/bash")))
(with-monad %store-monad
(return
(service
(documentation "Change caps-lock to control on the ttys.")
(provision '(anti-caps-lock))
(requirement '(user-processes))
(start
#~(lambda _
(zero? (system* #$bash "-c"
(string-append #$dumpkeys " | "
#$grep " Caps_Lock | "
#$sed " s/Caps_Lock/Control/g | "
#$loadkeys))))))))))
(define (sound-volume-service)
(let ((amixer #~(string-append #$alsa-utils "/bin/amixer")))
(with-monad %store-monad
(return
(service
(documentation "Initialize sound volume to maximum.")
(provision '(sound-volume-service))
(requirement '(user-processes))
(start
#~(lambda _
(zero? (system* #$amixer "-q" "set" "Master" "100%")))))))))
(operating-system
(host-name "jojen")
(timezone "US/Eastern")
(locale "en_US.utf8")
(bootloader (grub-configuration (device "/dev/sda")
(default-entry 0)
(timeout 1)))
(swap-devices '("/dev/sda5"))
(file-systems (cons* (file-system (device "jojen-root")
(title 'label)
(mount-point "/")
(type "ext4"))
(file-system (device "jojen-videos")
(title 'label)
(mount-point "/home/mhw/Videos")
(type "ext4")
(flags '(no-dev no-suid)))
%base-file-systems))
(users (list (user-account
(name "mhw")
(uid 1000)
(group "mhw")
(supplementary-groups
'("wheel" "users" "audio" "video" "dialout" "netdev"))
(home-directory "/home/mhw"))))
(groups (cons* (user-group
(name "mhw")
(id 1000))
%base-groups))
(name-service-switch (name-service-switch
(hosts (list %files
(name-service
(name "mdns_minimal")
(reaction (lookup-specification
(not-found => return))))
(name-service
(name "dns"))
(name-service
(name "mdns"))))))
(packages (cons* vim iproute iw wicd pulseaudio avahi
%base-packages))
(services
(let ((motd (text-file "motd" "
This is the GNU operating system, welcome!\n\n")))
(list (slim-service)
(dbus-service (list avahi pulseaudio wicd))
(wicd-service)
(avahi-service)
(nscd-service #:name-services (list nss-mdns))
(tor-service)
(bitlbee-service)
(temperature-regulation-service)
(powertop-auto-tune-service)
(hdparm-service "/dev/sda")
(anti-caps-lock-service)
(sound-volume-service)
(console-font-service "tty1")
(console-font-service "tty2")
(console-font-service "tty3")
(console-font-service "tty4")
(console-font-service "tty5")
(console-font-service "tty6")
(mingetty-service "tty1" #:motd motd)
(mingetty-service "tty2" #:motd motd)
(mingetty-service "tty3" #:motd motd)
(mingetty-service "tty4" #:motd motd)
(mingetty-service "tty5" #:motd motd)
(mingetty-service "tty6" #:motd motd)
(static-networking-service "lo" "127.0.0.1"
#:provision '(loopback))
(syslog-service)
(guix-service)
;; The LVM2 rules are needed as soon as LVM2 or the device-mapper is
;; used, so enable them by default. The FUSE and ALSA rules are
;; less critical, but handy.
(udev-service #:rules (list lvm2 fuse alsa-utils))))))
next prev parent reply other threads:[~2015-02-25 7:37 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-04 22:00 Name service switch configuration Ludovic Courtès
2015-02-25 7:37 ` Mark H Weaver [this message]
2015-02-25 17:07 ` Ludovic Courtès
2015-02-26 7:21 ` Mark H Weaver
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r3tev3ua.fsf@netris.org \
--to=mhw@netris.org \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.