diff options
-rw-r--r-- | gnu/packages/gnome.scm | 7 | ||||
-rw-r--r-- | gnu/services/networking.scm | 30 |
2 files changed, 36 insertions, 1 deletions
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index f17bd941cd..fafb93be08 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -5635,7 +5635,12 @@ Compatible with Cisco VPN concentrators configured to use IPsec.") to @acronym{VPNs, virtual private networks} via OpenConnect, an open client for Cisco's AnyConnect SSL VPN.") (license license:gpl2+) - (properties `((upstream-name . "NetworkManager-openconnect"))))) + (properties `((upstream-name . "NetworkManager-openconnect") + + ;; The 'etc/dbus-1/system.d/nm-openconnect-service.conf' + ;; file refers to account "nm-openconnect". Specify it here + ;; so that 'network-manager-service-type' creates it. + (user-accounts . ("nm-openconnect")))))) (define-public mobile-broadband-provider-info (package diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index f3925615bf..93d9b6a15e 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -51,6 +51,7 @@ #:use-module (guix gexp) #:use-module (guix records) #:use-module (guix modules) + #:use-module (guix packages) #:use-module (guix deprecation) #:use-module (rnrs enums) #:use-module (srfi srfi-1) @@ -1006,6 +1007,33 @@ and @command{wicd-curses} user interfaces." "Return a directory containing PLUGINS, the NM VPN plugins." (directory-union "network-manager-vpn-plugins" plugins)) +(define (network-manager-accounts config) + "Return the list of <user-account> and <user-group> for CONFIG." + (define nologin + (file-append shadow "/sbin/nologin")) + + (define accounts + (append-map (lambda (package) + (map (lambda (name) + (user-account (system? #t) + (name name) + (group "network-manager") + (comment "NetworkManager helper") + (home-directory "/var/empty") + (create-home-directory? #f) + (shell nologin))) + (or (assoc-ref (package-properties package) + 'user-accounts) + '()))) + (network-manager-configuration-vpn-plugins config))) + + (match accounts + (() + '()) + (_ + (cons (user-group (name "network-manager") (system? #t)) + accounts)))) + (define network-manager-environment (match-lambda (($ <network-manager-configuration> network-manager dns vpn-plugins) @@ -1055,6 +1083,8 @@ and @command{wicd-curses} user interfaces." (compose list network-manager-configuration-network-manager)) + (service-extension account-service-type + network-manager-accounts) (service-extension activation-service-type network-manager-activation) (service-extension session-environment-service-type |