mirror of
				https://codeberg.org/hako/Rosenthal.git
				synced 2025-11-04 03:34:37 +00:00 
			
		
		
		
	Import seatd-service-type from Guix.
* rosenthal/services/desktop.scm: New file. (seatd-configuration,seatd-service-type): New variables. <https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/services/desktop.scm> Removed hard requirements for control group file systems.
This commit is contained in:
		
							parent
							
								
									0dff44354a
								
							
						
					
					
						commit
						2bc27145b3
					
				
							
								
								
									
										87
									
								
								rosenthal/services/desktop.scm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								rosenthal/services/desktop.scm
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,87 @@
 | 
			
		||||
;; SPDX-FileCopyrightText: 2014-2022 Ludovic Courtès <ludo@gnu.org>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2015 Andy Wingo <wingo@igalia.com>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2015 Mark H Weaver <mhw@netris.org>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2016 Sou Bunnbu <iyzsong@gmail.com>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2017, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2017 Nikita <nikita@n0.is>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2018 Ricardo Wurmus <rekado@elephly.net>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2017, 2019 Christopher Baines <mail@cbaines.net>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2019 David Wilson <david@daviwil.com>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2020 Reza Alizadeh Majd <r.majd@pantherx.org>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2021 Brice Waegeneire <brice@waegenei.re>
 | 
			
		||||
;; SPDX-FileCopyrightText: 2021, 2022 muradm <mail@muradm.net>
 | 
			
		||||
;;
 | 
			
		||||
;; SPDX-License-Identifier: GPL-3.0-or-later
 | 
			
		||||
 | 
			
		||||
(define-module (rosenthal services desktop)
 | 
			
		||||
  #:use-module (gnu packages admin)
 | 
			
		||||
  #:use-module (gnu services)
 | 
			
		||||
  #:use-module (gnu services shepherd)
 | 
			
		||||
  #:use-module (gnu system pam)
 | 
			
		||||
  #:use-module (gnu system shadow)
 | 
			
		||||
  #:use-module (guix gexp)
 | 
			
		||||
  #:use-module (guix records)
 | 
			
		||||
  #:use-module (ice-9 match)
 | 
			
		||||
  #:export (seatd-configuration
 | 
			
		||||
            seatd-service-type))
 | 
			
		||||
 | 
			
		||||
;;;
 | 
			
		||||
;;; seatd-service-type -- minimal seat management daemon
 | 
			
		||||
;;;
 | 
			
		||||
 | 
			
		||||
(define (seatd-group-sanitizer group-or-name)
 | 
			
		||||
  (match group-or-name
 | 
			
		||||
    ((? user-group? group) group)
 | 
			
		||||
    ((? string? group-name) (user-group (name group-name) (system? #t)))
 | 
			
		||||
    (_ (leave (G_ "seatd: '~a' is not a valid group~%") group-or-name))))
 | 
			
		||||
 | 
			
		||||
(define-record-type* <seatd-configuration> seatd-configuration
 | 
			
		||||
  make-seatd-configuration
 | 
			
		||||
  seatd-configuration?
 | 
			
		||||
  (seatd seatd-package (default seatd))
 | 
			
		||||
  (group seatd-group                    ; string | <user-group>
 | 
			
		||||
         (default "seat")
 | 
			
		||||
         (sanitize seatd-group-sanitizer))
 | 
			
		||||
  (socket seatd-socket (default "/run/seatd.sock"))
 | 
			
		||||
  (logfile seatd-logfile (default "/var/log/seatd.log"))
 | 
			
		||||
  (loglevel seatd-loglevel (default "info")))
 | 
			
		||||
 | 
			
		||||
(define (seatd-shepherd-service config)
 | 
			
		||||
  (list (shepherd-service
 | 
			
		||||
         (documentation "Minimal seat management daemon")
 | 
			
		||||
         (requirement '())
 | 
			
		||||
         (provision '(seatd))
 | 
			
		||||
         (start #~(make-forkexec-constructor
 | 
			
		||||
                   (list #$(file-append (seatd-package config) "/bin/seatd")
 | 
			
		||||
                         "-g" #$(user-group-name (seatd-group config)))
 | 
			
		||||
                   #:environment-variables
 | 
			
		||||
                   (list (string-append "SEATD_LOGLEVEL="
 | 
			
		||||
                                        #$(seatd-loglevel config))
 | 
			
		||||
                         (string-append "SEATD_DEFAULTPATH="
 | 
			
		||||
                                        #$(seatd-socket config)))
 | 
			
		||||
                   #:log-file #$(seatd-logfile config)))
 | 
			
		||||
         (stop #~(make-kill-destructor)))))
 | 
			
		||||
 | 
			
		||||
(define seatd-accounts
 | 
			
		||||
  (match-lambda (($ <seatd-configuration> _ group) (list group))))
 | 
			
		||||
 | 
			
		||||
(define seatd-environment
 | 
			
		||||
  (match-lambda
 | 
			
		||||
    (($ <seatd-configuration> _ _ socket)
 | 
			
		||||
     `(("SEATD_SOCK" . ,socket)))))
 | 
			
		||||
 | 
			
		||||
(define seatd-service-type
 | 
			
		||||
  (service-type
 | 
			
		||||
   (name 'seatd)
 | 
			
		||||
   (description "Seat management takes care of mediating access
 | 
			
		||||
to shared devices (graphics, input), without requiring the
 | 
			
		||||
applications needing access to be root.")
 | 
			
		||||
   (extensions
 | 
			
		||||
    (list
 | 
			
		||||
     (service-extension account-service-type seatd-accounts)
 | 
			
		||||
     (service-extension session-environment-service-type seatd-environment)
 | 
			
		||||
     (service-extension shepherd-root-service-type seatd-shepherd-service)))
 | 
			
		||||
   (default-value (seatd-configuration))))
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user