[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] services: Add kmscon service.
From: |
David Craven |
Subject: |
[PATCH] services: Add kmscon service. |
Date: |
Tue, 6 Sep 2016 16:27:24 +0200 |
* gnu/services/base.scm (<kmscon-configuration>,
kmscon-shepherd-service, kmscon-service-type, kmscon-service): New
variables.
---
gnu/services/base.scm | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 99a6759..efd72c7 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -39,6 +39,7 @@
#:use-module (gnu packages package-management)
#:use-module (gnu packages ssh)
#:use-module (gnu packages lsof)
+ #:use-module (gnu packages terminals)
#:use-module ((gnu build file-systems)
#:select (mount-flags->bit-mask))
#:use-module (guix gexp)
@@ -116,6 +117,12 @@
rngd-configuration?
rngd-service-type
rngd-service
+
+ kmscon-configuration
+ kmscon-configuration?
+ kmscon-service-type
+ kmscon-service
+
pam-limits-service-type
pam-limits-service
@@ -1449,6 +1456,52 @@ This service is not part of @var{%base-services}."
(service gpm-service-type
(gpm-configuration (gpm gpm) (options options))))
+(define-record-type* <kmscon-configuration>
+ kmscon-configuration make-kmscon-configuration
+ kmscon-configuration?
+ (kmscon kmscon-configuration-kmscon
+ (default kmscon))
+ (vt kmscon-configuration-vt)
+ (login-program kmscon-configuration-login-program
+ (default #~(string-append #$shadow "/bin/login")))
+ (login-arguments kmscon-configuration-login-arguments
+ (default '("-p")))
+ (hwaccel? kmscon-configuration-hwaccel?
+ (default #f))) ; #t causes failure
+
+(define (kmscon-shepherd-service config)
+ "Return a <shepherd-service> for kmscon with CONFIG."
+ (let ((kmscon (kmscon-configuration-kmscon config))
+ (vt (kmscon-configuration-vt config))
+ (login-program (kmscon-configuration-login-program config))
+ (login-arguments (kmscon-configuration-login-arguments config))
+ (hwaccel? (kmscon-configuration-hwaccel? config)))
+
+ (define kmscon-command
+ #~(list
+ (string-append #$kmscon "/bin/kmscon") "--login"
+ "--vt" #$vt
+ #$@(if hwaccel? '("--hwaccel") '())
+ "--" #$login-program address@hidden))
+
+ (list (shepherd-service
+ (documentation "kmscon virtual terminal")
+ (requirement '(user-processes udev))
+ (provision (list (symbol-append 'term- (string->symbol vt))))
+ (start #~(make-forkexec-constructor #$kmscon-command))
+ (stop #~(make-kill-destructor))))))
+
+(define kmscon-service-type
+ (service-type (name 'kmscon)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ kmscon-shepherd-service)))))
+
+(define* (kmscon-service config)
+ "Run the @command{kmscon} daemon from @var{kmscon} to start a virtual
+terminal."
+ (service kmscon-service-type config))
+
(define %base-services
;; Convenience variable holding the basic services.
--
2.9.0
- [PATCH] services: Add kmscon service.,
David Craven <=