gnu: sugar-desktop-configuration: Allow specification of activities.

* gnu/services/desktop.scm (<sugar-desktop-configuration>): Add new fields for
activities and gobject-introspection.
(sugar-gobject-introspection, sugar-activities): New procedures.
(sugar-desktop-service-type): Install packages for activities and
gobject-introspection alongside the sugar package.
* doc/guix.texi (Desktop Services): Document changes.
This commit is contained in:
Ricardo Wurmus 2023-02-28 23:14:23 +01:00
parent 3ad3006c23
commit d7f9eb0e87
No known key found for this signature in database
GPG key ID: 197A5888235FACAC
2 changed files with 36 additions and 6 deletions

View file

@ -23185,10 +23185,9 @@ This is the type of the service that runs the
@uref{https://www.sugarlabs.org, Sugar desktop environment}. Its value
is a @code{sugar-desktop-configuration} object (see below).
This service adds the @code{sugar} package to the system profile. It
does not install any Sugar Activity. Add packages providing activities
to the list of packages to be installed globally to make them available
to users of the Sugar desktop environment.
This service adds the @code{sugar} package to the system profile, as
well as any selected Sugar activities. By default it only includes a
minimal set of activities.
@end defvar
@deftp {Data Type} sugar-desktop-configuration
@ -23197,9 +23196,33 @@ Configuration record for the Sugar desktop environment.
@table @asis
@item @code{sugar} (default: @code{sugar})
The Sugar package to use.
@item @code{gobject-introspection} (default: @code{gobject-introspection})
The @code{gobject-introspection} package to use. This package is used
to access libraries installed as dependencies of Sugar activities.
@item @code{activities} (default: @code{(list sugar-help-activity)})
A list of Sugar activities to install.
@end table
@end deftp
The following example configures the Sugar desktop environment with a
number of useful activities:
@lisp
(use-modules (gnu))
(use-package-modules sugar)
(use-service-modules desktop)
(operating-system
...
(services (cons* (service sugar-desktop-service-type
(sugar-desktop-configuration
(activities (list sugar-browse-activity
sugar-help-activity
sugar-jukebox-activity
sugar-typing-turtle-activity))))
%desktop-services))
...)
@end lisp
@defvar enlightenment-desktop-service-type
Return a service that adds the @code{enlightenment} package to the system
profile, and extends dbus with actions from @code{efl}.

View file

@ -1530,7 +1530,11 @@ (define lxqt-desktop-service-type
(define-record-type* <sugar-desktop-configuration> sugar-desktop-configuration
make-sugar-desktop-configuration
sugar-desktop-configuration?
(sugar sugar-package (default sugar)))
(sugar sugar-package (default sugar))
(gobject-introspection
sugar-gobject-introspection (default gobject-introspection))
(activities
sugar-activities (default (list sugar-help-activity))))
(define (sugar-polkit-settings config)
"Return the list of packages that provide polkit actions and rules."
@ -1543,7 +1547,10 @@ (define sugar-desktop-service-type
(list (service-extension polkit-service-type
sugar-polkit-settings)
(service-extension profile-service-type
(compose list sugar-package))))
(lambda (config)
(cons* (sugar-package config)
(sugar-gobject-introspection config)
(sugar-activities config))))))
(default-value (sugar-desktop-configuration))
(description "Run the Sugar desktop environment.")))