Subject: [bug#44029] [PATCH 4/4] services: Add LXQt desktop service.

From: Reza Alizadeh Majd <[email-masked]>
Date: Fri, 16 Oct 2020 14:49:24 +0330

* gnu/services/desktop.scm (<lxqt-desktop-configuration>,
lxqt-desktop-configuration?, lxqt-desktop-service-type,
lxqt-desktop-service): New variables.
---
 gnu/services/desktop.scm | 43 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm
index bdbea5dddf..416f50e417 100644
--- a/gnu/services/desktop.scm
+++ b/gnu/services/desktop.scm
@@ -53,6 +53,7 @@
   #:use-module (gnu packages suckless)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages libusb)
+  #:use-module (gnu packages lxqt)
   #:use-module (gnu packages mate)
   #:use-module (gnu packages enlightenment)
   #:use-module (guix deprecation)
@@ -131,6 +132,11 @@
             xfce-desktop-service
             xfce-desktop-service-type
 
+            lxqt-desktop-configuration
+            lxqt-desktop-configuration?
+            lxqt-desktop-service
+            lxqt-desktop-service-type
+
             x11-socket-directory-service
 
             enlightenment-desktop-configuration
@@ -1004,6 +1010,43 @@ system as root from within a user session, after the user has authenticated
 with the administrator's password."
   (service xfce-desktop-service-type config))
 
+
+;;;
+;;; Lxqt desktop service.
+;;;
+
+(define-record-type* <lxqt-desktop-configuration> lxqt-desktop-configuration
+  make-lxqt-desktop-configuration
+  lxqt-desktop-configuration?
+  (lxqt lxqt-package
+        (default lxqt)))
+
+(define (lxqt-polkit-settings config)
+  "Return the list of LXQt dependencies that provide polkit actions and
+rules."
+  (let ((lxqt (lxqt-package config)))
+    (map (lambda (name)
+           ((package-direct-input-selector name) lxqt))
+         '("lxqt-admin"))))
+
+(define lxqt-desktop-service-type
+  (service-type
+   (name 'lxqt-desktop)
+   (extensions
+    (list (service-extension polkit-service-type
+                             lxqt-polkit-settings)
+          (service-extension profile-service-type
+                             (compose list lxqt-package))))
+   (default-value (lxqt-desktop-configuration))
+   (description "Run LXQt desktop environment.")))
+
+(define-deprecated (lxqt-desktop-service #:key (config
+                                                (lxqt-desktop-configuration)))
+  lxqt-desktop-service-type
+  "Return a service that adds the @code{lxqt} package to the system profile,
+and extends polkit with the actions from @code{lxqt-admin}."
+  (service lxqt-desktop-service-type config))
+
 
 ;;;
 ;;; X11 socket directory service
-- 
2.28.0