From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: Re: Name service switch configuration Date: Wed, 25 Feb 2015 02:37:49 -0500 Message-ID: <87r3tev3ua.fsf@netris.org> References: <87fvalqqva.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57338) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQWXa-0007uO-3J for guix-devel@gnu.org; Wed, 25 Feb 2015 02:37:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YQWXW-0007ou-1y for guix-devel@gnu.org; Wed, 25 Feb 2015 02:37:54 -0500 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") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi Ludovic! ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Commit 996ed73 adds support to configure libc=E2=80=99s name service swit= ch > (NSS). To enable something like nss-mdns (for the resolution of > =E2=80=98.local=E2=80=99 names), one needs two things: > > 1. Add this snippet to the =E2=80=98operating-system=E2=80=99 declarati= on: > > (name-service-switch (name-service-switch > (hosts (list %files > (name-service > (name "mdns_minimal") > (reaction (lookup-specification > (not-found =3D> ret= urn)))) > (name-service > (name "dns")) > (name-service > (name "mdns")))))) > > 2. Arrange to have =E2=80=98nscd-service=E2=80=99 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 --=-=-= Content-Type: text/plain Content-Disposition: inline; filename=jojen.scm Content-Description: jojen OS configuration ;; 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)))))) --=-=-=--