unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
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))))))

  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

  List information: https://guix.gnu.org/

* 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 public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).