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
parent
122f91bd41
commit
e9d271ed9a
7
NEWS
7
NEWS
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.")))
|
||||
|
||||
|
||||
;;;
|
||||
|
|
Reference in New Issue