services: Add Enlightenment desktop service.

* gnu/services/desktop.scm (<enlightenment-desktop-configuration>,
enlightenment-desktop-service-type): New variables.
* doc/guix.texi (Desktop Services): Document the service.
* NEWS: Mention it.
This commit is contained in:
Efraim Flashner 2018-03-10 22:24:00 +02:00
parent 122f91bd41
commit e9d271ed9a
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351
3 changed files with 90 additions and 6 deletions

7
NEWS
View file

@ -11,6 +11,13 @@ Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
Please send Guix bug reports to bug-guix@gnu.org. Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 0.15.0 (since 0.14.0) * Changes in 0.15.0 (since 0.14.0)
** Distribution
*** New services
enlightenment
** Programming interfaces ** Programming interfaces
*** package-full-name (guix packages) now uses "@" as its delimiter. *** package-full-name (guix packages) now uses "@" as its delimiter.

View file

@ -12678,11 +12678,11 @@ field of an @code{operating-system} declaration (@pxref{operating-system
Reference, @code{services}}). Reference, @code{services}}).
Additionally, the @code{gnome-desktop-service}, Additionally, the @code{gnome-desktop-service},
@code{xfce-desktop-service} and @code{mate-desktop-service} @code{xfce-desktop-service}, @code{mate-desktop-service} and
procedures can add GNOME, XFCE and/or MATE to a system. @code{enlightenment-desktop-service-type} procedures can add GNOME, XFCE, MATE
To ``add GNOME'' means that system-level services like the and/or Enlightenment to a system. To ``add GNOME'' means that system-level
backlight adjustment helpers and the power management utilities are services like the backlight adjustment helpers and the power management
added to the system, extending @code{polkit} and @code{dbus} utilities are added to the system, extending @code{polkit} and @code{dbus}
appropriately, allowing GNOME to operate with elevated privileges on a appropriately, allowing GNOME to operate with elevated privileges on a
limited number of special-purpose system interfaces. Additionally, limited number of special-purpose system interfaces. Additionally,
adding a service made by @code{gnome-desktop-service} adds the GNOME adding a service made by @code{gnome-desktop-service} adds the GNOME
@ -12695,7 +12695,10 @@ To ``add MATE'' means that @code{polkit} and @code{dbus} are extended
appropriately, allowing MATE to operate with elevated privileges on a appropriately, allowing MATE to operate with elevated privileges on a
limited number of special-purpose system interfaces. Additionally, limited number of special-purpose system interfaces. Additionally,
adding a service made by @code{mate-desktop-service} adds the MATE adding a service made by @code{mate-desktop-service} adds the MATE
metapackage to the system profile. metapackage to the system profile. ``Adding ENLIGHTENMENT'' means that
@code{dbus} is extended appropriately, and several of Enlightenment's binaries
are set as setuid, allowing Enlightenment's screen locker and other
functionality to work as expetected.
The desktop environments in Guix use the Xorg display server by The desktop environments in Guix use the Xorg display server by
default. If you'd like to use the newer display server protocol default. If you'd like to use the newer display server protocol
@ -12725,6 +12728,18 @@ profile, and extends polkit with the actions from
@code{mate-settings-daemon}. @code{mate-settings-daemon}.
@end deffn @end deffn
@deffn {Scheme Procedure} 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}.
@end deffn
@deftp {Data Type} enlightenment-desktop-service-configuration
@table @asis
@item @code{enlightenment} (default @code{enlightenment})
The enlightenment package to use.
@end table
@end deftp
Because the GNOME, XFCE and MATE desktop services pull in so many packages, Because the GNOME, XFCE and MATE desktop services pull in so many packages,
the default @code{%desktop-services} variable doesn't include any of the default @code{%desktop-services} variable doesn't include any of
them by default. To add GNOME, XFCE or MATE, just @code{cons} them onto them by default. To add GNOME, XFCE or MATE, just @code{cons} them onto

View file

@ -5,6 +5,7 @@
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -32,6 +33,7 @@ (define-module (gnu services desktop)
#:use-module (gnu services sound) #:use-module (gnu services sound)
#:use-module ((gnu system file-systems) #:use-module ((gnu system file-systems)
#:select (%elogind-file-systems)) #:select (%elogind-file-systems))
#:use-module (gnu system)
#:use-module (gnu system shadow) #:use-module (gnu system shadow)
#:use-module (gnu system pam) #:use-module (gnu system pam)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
@ -45,9 +47,11 @@ (define-module (gnu services desktop)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages libusb) #:use-module (gnu packages libusb)
#:use-module (gnu packages mate) #:use-module (gnu packages mate)
#:use-module (gnu packages enlightenment)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (ice-9 match) #:use-module (ice-9 match)
@ -97,6 +101,10 @@ (define-module (gnu services desktop)
x11-socket-directory-service x11-socket-directory-service
enlightenment-desktop-configuration
enlightenment-desktop-configuration?
enlightenment-desktop-service-type
%desktop-services)) %desktop-services))
;;; Commentary: ;;; Commentary:
@ -900,6 +908,60 @@ (define x11-socket-directory-service
(let ((directory "/tmp/.X11-unix")) (let ((directory "/tmp/.X11-unix"))
(mkdir-p directory) (mkdir-p directory)
(chmod directory #o777)))))) (chmod directory #o777))))))
;;;
;;; Enlightenment desktop service.
;;;
(define-record-type* <enlightenment-desktop-configuration>
enlightenment-desktop-configuration make-enlightenment-desktop-configuration
enlightenment-desktop-configuration?
;; <package>
(enlightenment enlightenment-package
(default enlightenment)))
(define (enlightenment-setuid-programs enlightenment-desktop-configuration)
(match-record enlightenment-desktop-configuration
<enlightenment-desktop-configuration>
(enlightenment)
(list (file-append enlightenment
"/lib/enlightenment/utils/enlightenment_sys")
(file-append enlightenment
"/lib/enlightenment/utils/enlightenment_backlight")
;; TODO: Move this binary to a screen-locker service.
(file-append enlightenment
"/lib/enlightenment/utils/enlightenment_ckpasswd")
(file-append enlightenment
(string-append
"/lib/enlightenment/modules/cpufreq/"
(match (string-tokenize (%current-system)
(char-set-complement (char-set #\-)))
((arch "linux") (string-append "linux-gnu-" arch))
((arch "gnu") (string-append "gnu-" arch)))
"-"
(version-major+minor (package-version enlightenment))
"/freqset")))))
(define enlightenment-desktop-service-type
(service-type
(name 'enlightenment-desktop)
(extensions
(list (service-extension dbus-root-service-type
(compose list
(package-direct-input-selector
"efl")
enlightenment-package))
(service-extension setuid-program-service-type
enlightenment-setuid-programs)
(service-extension profile-service-type
(compose list
enlightenment-package))))
(default-value (enlightenment-desktop-configuration))
(description
"Return a service that adds the @code{enlightenment} package to the system
profile, and extends dbus with the ability for @code{efl} to generate
thumbnails and makes setuid the programs which enlightenment needs to function
as expected.")))
;;; ;;;