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.
master
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.
* Changes in 0.15.0 (since 0.14.0)
** Distribution
*** New services
enlightenment
** Programming interfaces
*** 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}}).
Additionally, the @code{gnome-desktop-service},
@code{xfce-desktop-service} and @code{mate-desktop-service}
procedures can add GNOME, XFCE and/or MATE 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}
@code{xfce-desktop-service}, @code{mate-desktop-service} and
@code{enlightenment-desktop-service-type} procedures can add GNOME, XFCE, MATE
and/or Enlightenment 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
@ -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
limited number of special-purpose system interfaces. Additionally,
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
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}.
@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,
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

View File

@ -5,6 +5,7 @@
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -32,6 +33,7 @@
#:use-module (gnu services sound)
#:use-module ((gnu system file-systems)
#:select (%elogind-file-systems))
#:use-module (gnu system)
#:use-module (gnu system shadow)
#:use-module (gnu system pam)
#:use-module (gnu packages glib)
@ -45,9 +47,11 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages libusb)
#:use-module (gnu packages mate)
#:use-module (gnu packages enlightenment)
#:use-module (guix records)
#:use-module (guix packages)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix gexp)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
@ -97,6 +101,10 @@
x11-socket-directory-service
enlightenment-desktop-configuration
enlightenment-desktop-configuration?
enlightenment-desktop-service-type
%desktop-services))
;;; Commentary:
@ -900,6 +908,60 @@ with the administrator's password."
(let ((directory "/tmp/.X11-unix"))
(mkdir-p directory)
(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.")))
;;;