summary refs log tree commit diff
path: root/gnu/system
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-12-06 23:58:46 +0100
committerLudovic Courtès <ludo@gnu.org>2013-12-07 00:01:06 +0100
commita348b09ea9c1dd51c4ce8e16f2f0629c64b9feb6 (patch)
tree090a19a2d055bbf63353b01a8e3281e75119093d /gnu/system
parent0b8a376b68ac117646cc54d91fa54d788623b755 (diff)
downloadguix-a348b09ea9c1dd51c4ce8e16f2f0629c64b9feb6.tar.gz
gnu: Move /etc/resolv.conf handling to the networking service.
* gnu/system/vm.scm (etc-directory): Remove 'resolv.conf'.
  (system-qemu-image): Use 'static-networking-service' with
  #:name-servers.  Don't populate the image with /etc/resolv.conf.
* gnu/system/dmd.scm (static-networking-service): Add #:name-servers
  parameter.  Use it to populate /etc/resolv.conf.
Diffstat (limited to 'gnu/system')
-rw-r--r--gnu/system/dmd.scm12
-rw-r--r--gnu/system/vm.scm9
2 files changed, 14 insertions, 7 deletions
diff --git a/gnu/system/dmd.scm b/gnu/system/dmd.scm
index f4b9371ada..8a79f0a50f 100644
--- a/gnu/system/dmd.scm
+++ b/gnu/system/dmd.scm
@@ -163,6 +163,7 @@
 (define* (static-networking-service interface ip
                                     #:key
                                     gateway
+                                    (name-servers '())
                                     (inetutils inetutils)
                                     (net-tools net-tools))
   "Return a service that starts INTERFACE with address IP.  If GATEWAY is
@@ -185,6 +186,17 @@ true, it must be a string specifying the default network gateway."
                      ,(if gateway
                           `(zero? (system* ,route "add" "-net" "default"
                                            "gw" ,gateway))
+                          #t)
+                     ,(if (pair? name-servers)
+                          `(call-with-output-file "/etc/resolv.conf"
+                             (lambda (port)
+                               (display
+                                "# Generated by 'static-networking-service'.\n"
+                                port)
+                               (for-each (lambda (server)
+                                           (format port "nameserver ~a~%"
+                                                   server))
+                                         ',name-servers)))
                           #t))))
       (stop  `(lambda _
                 ;; Return #f is successfully stopped.
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 251114f770..502c13b973 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -517,10 +517,6 @@ export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
 alias ls='ls -p --color'
 alias ll='ls -l'
 ")))
-       (resolv.conf
-        ;; Name resolution for default QEMU settings.
-        ;; FIXME: Move to networking service.
-        (text-file "resolv.conf" "nameserver 10.0.2.3\n"))
 
        (files -> `(("services" ,services)
                    ("protocols" ,protocols)
@@ -531,8 +527,7 @@ alias ll='ls -l'
                    ("profile" ,bashrc)
                    ("passwd" ,passwd)
                    ("shadow" ,shadow)
-                   ("group" ,group)
-                   ("resolv.conf" ,resolv.conf))))
+                   ("group" ,group))))
     (file-union files
                 #:inputs `(("net" ,net-base)
                            ("pam.d" ,pam.d))
@@ -557,6 +552,7 @@ alias ll='ls -l'
 
                         ;; QEMU networking settings.
                         (static-networking-service "eth0" "10.0.2.10"
+                                                   #:name-servers '("10.0.2.3")
                                                    #:gateway "10.0.2.2")))
        (motd     (text-file "motd" "
 Happy birthday, GNU!                                http://www.gnu.org/gnu30
@@ -636,7 +632,6 @@ Happy birthday, GNU!                                http://www.gnu.org/gnu30
                       ("/etc/group" -> "/etc/static/group")
                       ("/etc/login.defs" -> "/etc/static/login.defs")
                       ("/etc/pam.d" -> "/etc/static/pam.d")
-                      ("/etc/resolv.conf" -> "/etc/static/resolv.conf")
                       ("/etc/profile" -> "/etc/static/profile")
                       ("/etc/issue" -> "/etc/static/issue")
                       ("/etc/services" -> "/etc/static/services")