~ruther/guix-local

7234ad4f549066ebda7c28a492042833ba1cf723 — 宋文武 10 years ago bde2171
services: Add network-manager-service.

* gnu/services/networking.scm (network-manager-service): New procedure.
(network-manager-service-type, %network-manager-activation): New variables.
(network-manager-dmd-service): New procedure.
1 files changed, 42 insertions(+), 1 deletions(-)

M gnu/services/networking.scm
M gnu/services/networking.scm => gnu/services/networking.scm +42 -1
@@ 29,6 29,7 @@
  #:use-module (gnu packages messaging)
  #:use-module (gnu packages ntp)
  #:use-module (gnu packages wicd)
  #:use-module (gnu packages gnome)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (srfi srfi-26)


@@ 40,7 41,8 @@
            ntp-service
            tor-service
            bitlbee-service
            wicd-service))
            wicd-service
            network-manager-service))

;;; Commentary:
;;;


@@ 498,4 500,43 @@ several commands to interact with the daemon and configure networking:
and @command{wicd-curses} user interfaces."
  (service wicd-service-type wicd))


;;;
;;; NetworkManager
;;;

(define %network-manager-activation
  ;; Activation gexp for NetworkManager.
  #~(begin
      (use-modules (guix build utils))
      (mkdir-p "/etc/NetworkManager/system-connections")))

(define (network-manager-dmd-service network-manager)
  "Return a dmd service for NETWORK-MANAGER."
  (list (dmd-service
         (documentation "Run the NetworkManager.")
         (provision '(networking))
         (requirement '(user-processes dbus-system loopback))
         (start #~(make-forkexec-constructor
                   (list (string-append #$network-manager
                                        "/sbin/NetworkManager")
                         "--no-daemon")))
         (stop #~(make-kill-destructor)))))

(define network-manager-service-type
  (service-type (name 'network-manager)
                (extensions
                 (list (service-extension dmd-root-service-type
                                          network-manager-dmd-service)
                       (service-extension dbus-root-service-type list)
                       (service-extension activation-service-type
                                          (const %network-manager-activation))
                       ;; Add network-manager to the system profile.
                       (service-extension profile-service-type list)))))

(define* (network-manager-service #:key (network-manager network-manager))
  "Return a service that runs NetworkManager, a network connection manager
that attempting to keep active network connectivity when available."
  (service network-manager-service-type network-manager))

;;; networking.scm ends here