gnu: services: Add GNOME and XFCE desktop services.
* gnu/services/desktop.scm (package-direct-input-selector): New function. (<gnome-desktop-configuration>, gnome-desktop-service-type) (<xfce-desktop-configuration>, xfce-desktop-service-type): New variables. (gnome-desktop-service, xfce-desktop-service): New public variables. * doc/guix.texi (Desktop Services): Document new variables.
This commit is contained in:
parent
20095cc513
commit
7a2413e46d
|
@ -7474,7 +7474,8 @@ makes the good ol' XlockMore usable.
|
||||||
The @code{(gnu services desktop)} module provides services that are
|
The @code{(gnu services desktop)} module provides services that are
|
||||||
usually useful in the context of a ``desktop'' setup---that is, on a
|
usually useful in the context of a ``desktop'' setup---that is, on a
|
||||||
machine running a graphical display server, possibly with graphical user
|
machine running a graphical display server, possibly with graphical user
|
||||||
interfaces, etc.
|
interfaces, etc. It also defines services that provide specific desktop
|
||||||
|
environments like GNOME and XFCE.
|
||||||
|
|
||||||
To simplify things, the module defines a variable containing the set of
|
To simplify things, the module defines a variable containing the set of
|
||||||
services that users typically expect on a machine with a graphical
|
services that users typically expect on a machine with a graphical
|
||||||
|
@ -7499,8 +7500,57 @@ The @var{%desktop-services} variable can be used as the @code{services}
|
||||||
field of an @code{operating-system} declaration (@pxref{operating-system
|
field of an @code{operating-system} declaration (@pxref{operating-system
|
||||||
Reference, @code{services}}).
|
Reference, @code{services}}).
|
||||||
|
|
||||||
The actual service definitions provided by @code{(gnu services dbus)}
|
Additionally, the @code{gnome-desktop-service} and
|
||||||
and @code{(gnu services desktop)} are described below.
|
@code{xfce-desktop-service} procedures can add GNOME and/or XFCE to a
|
||||||
|
system. To ``add GNOME'' means that system-level services like the
|
||||||
|
backlight adjustment helpers and the power management utilities are
|
||||||
|
added to the system, extending @code{polkit} and @code{dbus}
|
||||||
|
appropriately, allowing GNOME to operate with elevated privileges on a
|
||||||
|
limited number of special-purpose system interfaces. Additionally,
|
||||||
|
adding a service made by @code{gnome-desktop-service} adds the GNOME
|
||||||
|
metapackage to the system profile. Likewise, adding the XFCE service
|
||||||
|
not only adds the @code{xfce} metapackage to the system profile, but it
|
||||||
|
also gives the Thunar file manager the ability to open a ``root-mode''
|
||||||
|
file management window, if the user authenticates using the
|
||||||
|
administrator's password via the standard polkit graphical interface.
|
||||||
|
|
||||||
|
@deffn {Scheme Procedure} gnome-desktop-service
|
||||||
|
Return a service that adds the @code{gnome} package to the system
|
||||||
|
profile, and extends polkit with the actions from
|
||||||
|
@code{gnome-settings-daemon}.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deffn {Scheme Procedure} xfce-desktop-service
|
||||||
|
Return a service that adds the @code{xfce} package to the system profile,
|
||||||
|
and extends polkit with the abilit for @code{thunar} to manipulate the
|
||||||
|
file system as root from within a user session, after the user has
|
||||||
|
authenticated with the administrator's password.
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
Because the GNOME and XFCE desktop services pull in so many packages,
|
||||||
|
the default @code{%desktop-services} variable doesn't include either of
|
||||||
|
them by default. To add GNOME or XFCE, just @code{cons} them onto
|
||||||
|
@code{%desktop-services} in the @code{services} field of your
|
||||||
|
@code{operating-system}:
|
||||||
|
|
||||||
|
@example
|
||||||
|
(use-modules (gnu))
|
||||||
|
(use-service-modules desktop)
|
||||||
|
(operating-system
|
||||||
|
...
|
||||||
|
;; cons* adds items to the list given as its last argument.
|
||||||
|
(services (cons* (gnome-desktop-service)
|
||||||
|
(xfce-desktop-service)
|
||||||
|
%desktop-services))
|
||||||
|
...)
|
||||||
|
@end example
|
||||||
|
|
||||||
|
These desktop environments will then be available as options in the
|
||||||
|
graphical login window.
|
||||||
|
|
||||||
|
The actual service definitions included in @code{%desktop-services} and
|
||||||
|
provided by @code{(gnu services dbus)} and @code{(gnu services desktop)}
|
||||||
|
are described below.
|
||||||
|
|
||||||
@deffn {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()]
|
@deffn {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services '()]
|
||||||
Return a service that runs the ``system bus'', using @var{dbus}, with
|
Return a service that runs the ``system bus'', using @var{dbus}, with
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#:use-module (gnu packages admin)
|
#:use-module (gnu packages admin)
|
||||||
#:use-module (gnu packages freedesktop)
|
#:use-module (gnu packages freedesktop)
|
||||||
#:use-module (gnu packages gnome)
|
#:use-module (gnu packages gnome)
|
||||||
|
#:use-module (gnu packages xfce)
|
||||||
#:use-module (gnu packages avahi)
|
#:use-module (gnu packages avahi)
|
||||||
#:use-module (gnu packages polkit)
|
#:use-module (gnu packages polkit)
|
||||||
#:use-module (gnu packages xdisorg)
|
#:use-module (gnu packages xdisorg)
|
||||||
|
@ -51,6 +52,8 @@
|
||||||
polkit-service
|
polkit-service
|
||||||
elogind-configuration
|
elogind-configuration
|
||||||
elogind-service
|
elogind-service
|
||||||
|
gnome-desktop-service
|
||||||
|
xfce-desktop-service
|
||||||
%desktop-services))
|
%desktop-services))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
|
@ -67,6 +70,11 @@
|
||||||
(define (bool value)
|
(define (bool value)
|
||||||
(if value "true\n" "false\n"))
|
(if value "true\n" "false\n"))
|
||||||
|
|
||||||
|
(define (package-direct-input-selector input)
|
||||||
|
(lambda (package)
|
||||||
|
(match (assoc-ref (package-direct-inputs package) input)
|
||||||
|
((package . _) package))))
|
||||||
|
|
||||||
|
|
||||||
(define (wrapped-dbus-service service program variable value)
|
(define (wrapped-dbus-service service program variable value)
|
||||||
"Return a wrapper for @var{service}, a package containing a D-Bus service,
|
"Return a wrapper for @var{service}, a package containing a D-Bus service,
|
||||||
|
@ -695,6 +703,64 @@ types (graphical, console, remote, etc.). It can also clean up after users
|
||||||
when they log out."
|
when they log out."
|
||||||
(service elogind-service-type config))
|
(service elogind-service-type config))
|
||||||
|
|
||||||
|
|
||||||
|
;;;
|
||||||
|
;;; GNOME desktop service.
|
||||||
|
;;;
|
||||||
|
|
||||||
|
(define-record-type* <gnome-desktop-configuration> gnome-desktop-configuration
|
||||||
|
make-gnome-desktop-configuration
|
||||||
|
gnome-desktop-configuration
|
||||||
|
(gnome-package gnome-package (default gnome)))
|
||||||
|
|
||||||
|
(define gnome-desktop-service-type
|
||||||
|
(service-type
|
||||||
|
(name 'gnome-desktop)
|
||||||
|
(extensions
|
||||||
|
(list (service-extension polkit-service-type
|
||||||
|
(compose list
|
||||||
|
(package-direct-input-selector
|
||||||
|
"gnome-settings-daemon")
|
||||||
|
gnome-package))
|
||||||
|
(service-extension profile-service-type
|
||||||
|
(compose list
|
||||||
|
gnome-package))))))
|
||||||
|
|
||||||
|
(define* (gnome-desktop-service #:key (config (gnome-desktop-configuration)))
|
||||||
|
"Return a service that adds the @code{gnome} package to the system profile,
|
||||||
|
and extends polkit with the actions from @code{gnome-settings-daemon}."
|
||||||
|
(service gnome-desktop-service-type config))
|
||||||
|
|
||||||
|
|
||||||
|
;;;
|
||||||
|
;;; XFCE desktop service.
|
||||||
|
;;;
|
||||||
|
|
||||||
|
(define-record-type* <xfce-desktop-configuration> xfce-desktop-configuration
|
||||||
|
make-xfce-desktop-configuration
|
||||||
|
xfce-desktop-configuration
|
||||||
|
(xfce xfce-package (default xfce)))
|
||||||
|
|
||||||
|
(define xfce-desktop-service-type
|
||||||
|
(service-type
|
||||||
|
(name 'xfce-desktop)
|
||||||
|
(extensions
|
||||||
|
(list (service-extension polkit-service-type
|
||||||
|
(compose list
|
||||||
|
(package-direct-input-selector
|
||||||
|
"thunar")
|
||||||
|
xfce-package))
|
||||||
|
(service-extension profile-service-type
|
||||||
|
(compose list
|
||||||
|
xfce-package))))))
|
||||||
|
|
||||||
|
(define* (xfce-desktop-service #:key (config (xfce-desktop-configuration)))
|
||||||
|
"Return a service that adds the @code{xfce} package to the system profile,
|
||||||
|
and extends polkit with the abilit for @code{thunar} to manipulate the file
|
||||||
|
system as root from within a user session, after the user has authenticated
|
||||||
|
with the administrator's password."
|
||||||
|
(service xfce-desktop-service-type config))
|
||||||
|
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; The default set of desktop services.
|
;;; The default set of desktop services.
|
||||||
|
|
Loading…
Reference in New Issue