summary refs log tree commit diff
path: root/gnu/services/networking.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/services/networking.scm')
-rw-r--r--gnu/services/networking.scm58
1 files changed, 30 insertions, 28 deletions
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 317800db50..5522541735 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -20,6 +20,7 @@
   #:use-module (gnu services)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages linux)
+  #:use-module (guix gexp)
   #:use-module (guix monads)
   #:export (static-networking-service))
 
@@ -41,40 +42,41 @@ true, it must be a string specifying the default network gateway."
   ;; TODO: Eventually we should do this using Guile's networking procedures,
   ;; like 'configure-qemu-networking' does, but the patch that does this is
   ;; not yet in stock Guile.
-  (mlet %store-monad ((ifconfig (package-file inetutils "bin/ifconfig"))
-                      (route    (package-file net-tools "sbin/route")))
+  (with-monad %store-monad
     (return
      (service
       (documentation
        (string-append "Set up networking on the '" interface
                       "' interface using a static IP address."))
       (provision '(networking))
-      (start `(lambda _
-                ;; Return #t if successfully started.
-                (and (zero? (system* ,ifconfig ,interface ,ip "up"))
-                     ,(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 _
+      (start #~(lambda _
+                 ;; Return #t if successfully started.
+                 (and (zero? (system* (string-append #$inetutils
+                                                     "/bin/ifconfig")
+                                      #$interface #$ip "up"))
+                      #$(if gateway
+                            #~(zero? (system* (string-append #$net-tools
+                                                             "/sbin/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.
-                (not (and (system* ,ifconfig ,interface "down")
-                          (system* ,route "del" "-net" "default")))))
-      (respawn? #f)
-      (inputs `(("inetutils" ,inetutils)
-                ,@(if gateway
-                      `(("net-tools" ,net-tools))
-                      '())))))))
+                (not (and (system* (string-append #$inetutils "/sbin/ifconfig")
+                                   #$interface "down")
+                          (system* (string-append #$net-tools "/sbin/route")
+                                   "del" "-net" "default")))))
+      (respawn? #f)))))
 
 ;;; networking.scm ends here