guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: services: Add kmscon service.


From: David Craven
Subject: 02/02: services: Add kmscon service.
Date: Sun, 11 Sep 2016 14:29:58 +0000 (UTC)

dvc pushed a commit to branch master
in repository guix.

commit 46ec2707a459f376dd72ea6e545662f51157c95e
Author: David Craven <address@hidden>
Date:   Wed Jul 20 13:17:07 2016 +0200

    services: Add kmscon service.
    
    * gnu/services/base.scm (<kmscon-configuration>, kmscon-service-type):
      New variables.
    * doc/guix.texi (@deffn kmscon-service-type, @deftp
      kmscon-configuration): Add documentation.
---
 doc/guix.texi         |   31 +++++++++++++++++++++++++++++++
 gnu/services/base.scm |   43 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+)

diff --git a/doc/guix.texi b/doc/guix.texi
index 41b8d5d..65cf804 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -7674,6 +7674,37 @@ The Mingetty package to use.
 @end table
 @end deftp
 
address@hidden {Scheme Procedure} kmscon-service-type @var{config}
+Return a service to run 
@uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon}
+according to @var{config}, a @code{<kmscon-configuration>} object, which
+specifies the tty to run, among other things.
address@hidden deffn
+
address@hidden {Data Type} kmscon-configuration
+This is the data type representing the configuration of Kmscon, which
+implements console log-in.
+
address@hidden @asis
+
address@hidden @code{virtual-terminal}
+The name of the console this Kmscon runs on---e.g., @code{"tty1"}.
+
address@hidden @code{login-program} (default: @code{#~(string-append #$shadow 
"/bin/login")})
+A gexp denoting the name of the log-in program. The default log-in program is
address@hidden from the Shadow tool suite.
+
address@hidden @code{login-arguments} (default: @code{'("-p")})
+A list of arguments to pass to @command{login}.
+
address@hidden @code{hardware-acceleration?} (default: #f)
+Whether to use hardware acceleration.
+
address@hidden @code{kmscon} (default: @var{kmscon})
+The Kmscon package to use.
+
address@hidden table
address@hidden deftp
+
 @cindex name service cache daemon
 @cindex nscd
 @deffn {Scheme Procedure} nscd-service address@hidden [#:glibc glibc] @
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 20a9c3a..4c1c481 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,11 @@
             rngd-configuration?
             rngd-service-type
             rngd-service
+
+            kmscon-configuration
+            kmscon-configuration?
+            kmscon-service-type
+
             pam-limits-service-type
             pam-limits-service
 
@@ -1449,6 +1455,43 @@ 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))
+  (virtual-terminal        kmscon-configuration-virtual-terminal)
+  (login-program           kmscon-configuration-login-program
+                           (default #~(string-append #$shadow "/bin/login")))
+  (login-arguments         kmscon-configuration-login-arguments
+                           (default '("-p")))
+  (hardware-acceleration?  kmscon-configuration-hardware-acceleration?
+                           (default #f))) ; #t causes failure
+
+(define kmscon-service-type
+  (shepherd-service-type
+   'kmscon
+   (lambda (config)
+     (let ((kmscon (kmscon-configuration-kmscon config))
+           (virtual-terminal (kmscon-configuration-virtual-terminal config))
+           (login-program (kmscon-configuration-login-program config))
+           (login-arguments (kmscon-configuration-login-arguments config))
+           (hardware-acceleration? 
(kmscon-configuration-hardware-acceleration? config)))
+
+       (define kmscon-command
+         #~(list
+            (string-append #$kmscon "/bin/kmscon") "--login"
+            "--vt" #$virtual-terminal
+            #$@(if hardware-acceleration? '("--hwaccel") '())
+            "--" #$login-program address@hidden))
+
+       (shepherd-service
+        (documentation "kmscon virtual terminal")
+        (requirement '(user-processes udev dbus-system))
+        (provision (list (symbol-append 'term- (string->symbol 
virtual-terminal))))
+        (start #~(make-forkexec-constructor #$kmscon-command))
+        (stop #~(make-kill-destructor)))))))
+
 
 (define %base-services
   ;; Convenience variable holding the basic services.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]