summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi29
-rw-r--r--gnu/services/desktop.scm31
2 files changed, 52 insertions, 8 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 954ff90ff7..e8b4d5e082 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -11572,14 +11572,14 @@ This is a list of services that builds upon @var{%base-services} and
adds or adjusts services for a typical ``desktop'' setup.
In particular, it adds a graphical login manager (@pxref{X Window,
-@code{slim-service}}), screen lockers,
-a network management tool (@pxref{Networking
-Services, @code{wicd-service}}), energy and color management services,
-the @code{elogind} login and seat manager, the Polkit privilege service,
-the GeoClue location service, an NTP client (@pxref{Networking
-Services}), the Avahi daemon, and has the name service switch service
-configured to be able to use @code{nss-mdns} (@pxref{Name Service
-Switch, mDNS}).
+@code{slim-service}}), screen lockers, a network management tool
+(@pxref{Networking Services, @code{wicd-service}}), energy and color
+management services, the @code{elogind} login and seat manager, the
+Polkit privilege service, the GeoClue location service, the
+AccountsService daemon that allows authorized users change system
+passwords, an NTP client (@pxref{Networking Services}), the Avahi
+daemon, and has the name service switch service configured to be able to
+use @code{nss-mdns} (@pxref{Name Service Switch, mDNS}).
@end defvr
The @var{%desktop-services} variable can be used as the @code{services}
@@ -11722,6 +11722,19 @@ their default values are:
@end table
@end deffn
+@deffn {Scheme Procedure} accountsservice-service @
+ [#:accountsservice @var{accountsservice}]
+Return a service that runs AccountsService, a system service that can
+list available accounts, change their passwords, and so on.
+AccountsService integrates with PolicyKit to enable unprivileged users
+to acquire the capability to modify their system configuration.
+@uref{https://www.freedesktop.org/wiki/Software/AccountsService/, the
+accountsservice web site} for more information.
+
+The @var{accountsservice} keyword argument is the @code{accountsservice}
+package to expose as a service.
+@end deffn
+
@deffn {Scheme Procedure} polkit-service @
[#:polkit @var{polkit}]
Return a service that runs the
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index 50a561bf51..0509bd8a44 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -73,6 +73,9 @@
elogind-service
elogind-service-type
+ accountsservice-service-type
+ accountsservice-service
+
gnome-desktop-configuration
gnome-desktop-configuration?
gnome-desktop-service
@@ -705,6 +708,33 @@ when they log out."
;;;
+;;; AccountsService service.
+;;;
+
+(define %accountsservice-activation
+ #~(begin
+ (use-modules (guix build utils))
+ (mkdir-p "/var/lib/AccountsService")))
+
+(define accountsservice-service-type
+ (service-type (name 'accountsservice)
+ (extensions
+ (list (service-extension activation-service-type
+ (const %accountsservice-activation))
+ (service-extension dbus-root-service-type list)
+ (service-extension polkit-service-type list)))))
+
+(define* (accountsservice-service #:key (accountsservice accountsservice))
+ "Return a service that runs AccountsService, a system service that
+can list available accounts, change their passwords, and so on.
+AccountsService integrates with PolicyKit to enable unprivileged users to
+acquire the capability to modify their system configuration.
+@uref{https://www.freedesktop.org/wiki/Software/AccountsService/, the
+accountsservice web site} for more information."
+ (service accountsservice-service-type accountsservice))
+
+
+;;;
;;; GNOME desktop service.
;;;
@@ -783,6 +813,7 @@ with the administrator's password."
(wicd-service)
(udisks-service)
(upower-service)
+ (accountsservice-service)
(colord-service)
(geoclue-service)
(polkit-service)