aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/gnome.scm7
-rw-r--r--gnu/services/networking.scm30
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