[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Name service switch configuration
From: |
Mark H Weaver |
Subject: |
Re: Name service switch configuration |
Date: |
Wed, 25 Feb 2015 02:37:49 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) |
Hi Ludovic!
address@hidden (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
;; 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))))))