guix-commits
[Top][All Lists]
Advanced

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

17/24: services: Add `hurd-getty-service-type'.


From: guix-commits
Subject: 17/24: services: Add `hurd-getty-service-type'.
Date: Sat, 6 Jun 2020 11:09:39 -0400 (EDT)

janneke pushed a commit to branch wip-hurd-vm
in repository guix.

commit 29d7cf971b6a7d6a61a2c1172a455284117911ca
Author: Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
AuthorDate: Thu May 7 11:14:01 2020 +0200

    services: Add `hurd-getty-service-type'.
    
    * gnu/services/hurd.scm (<hurd-gettty-configuration>): New record.
    (hurd-ttys-shepherd-service): New procedure.
    (hurd-getty-service-type): New variable.
    * doc/guix.texi (Hurd Services): Document it.
---
 doc/guix.texi         | 23 +++++++++++++++++++++++
 gnu/services/hurd.scm | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 74 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 9a57b92..13e3c01 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -26059,6 +26059,29 @@ The Hurd package to use.
 @end table
 @end deftp
 
+@defvr {Scheme Variable} hurd-getty-service-type
+This service starts a tty using the Hurd @code{getty} program.
+
+The service's value is a @code{hurd-getty-configuration} record.
+@end defvr
+
+@deftp {Data Type} hurd-getty-configuration
+This is the data type representing the configuration for the
+hurd-getty-service.
+
+@table @asis
+@item @code{hurd} (default: @var{hurd})
+The Hurd package to use.
+
+@item @code{tty}
+The name of the console this Getty runs on---e.g., @code{"tty1"}.
+
+@item @code{baud-rate} (default: @code{38400})
+An integer specifying the baud rate of the tty.
+
+@end table
+@end deftp
+
 @node Miscellaneous Services
 @subsection Miscellaneous Services
 
diff --git a/gnu/services/hurd.scm b/gnu/services/hurd.scm
index 36da8e2..1ccf164 100644
--- a/gnu/services/hurd.scm
+++ b/gnu/services/hurd.scm
@@ -25,7 +25,9 @@
   #:use-module (guix gexp)
   #:use-module (guix records)
   #:export (hurd-console-configuration
-            hurd-console-service-type))
+            hurd-console-service-type
+            hurd-getty-configuration
+            hurd-getty-service-type))
 
 ;;; Commentary:
 ;;;
@@ -70,4 +72,52 @@
                              hurd-console-shepherd-service)))
    (default-value (hurd-console-configuration))))
 
+
+;;;
+;;; The Hurd getty service.
+;;;
+
+(define-record-type* <hurd-getty-configuration>
+  hurd-getty-configuration make-hurd-getty-configuration
+  hurd-getty-configuration?
+  (hurd       hurd-getty-configuration-hurd  ;<package>
+              (default hurd))
+  (tty        hurd-getty-configuration-tty)  ;string
+  (baud-rate  hurd-getty-configuration-baud-rate
+              (default 38400)))              ;integer
+
+(define (hurd-getty-shepherd-service config)
+  "Return a <shepherd-service> for a Hurd getty with CONFIG."
+
+  (let ((hurd      (hurd-getty-configuration-hurd config))
+        (tty       (hurd-getty-configuration-tty config))
+        (baud-rate (hurd-getty-configuration-baud-rate config)))
+
+    (define getty-command
+      #~(list
+         (string-append #$hurd "/libexec/getty")
+         #$(number->string baud-rate)
+         #$tty))
+
+    (list
+     (shepherd-service
+      (documentation "Run getty on a tty.")
+      (provision (list (string->symbol (string-append "term-" tty))))
+      (requirement '(user-processes console))
+      (start #~(make-forkexec-constructor #$getty-command))
+      (stop  #~(make-kill-destructor))))))
+
+(define hurd-getty-service-type
+  (service-type
+   (name 'getty)
+   (extensions (list (service-extension shepherd-root-service-type
+                                        hurd-getty-shepherd-service)))
+   (description
+    "Provide console login using the Hurd @command{getty} program.")))
+
+(define* (hurd-getty-service config)
+  "Return a service to run the Hurd getty according to @var{config}, which
+specifies the tty to run, among other things."
+  (service hurd-getty-service-type config))
+
 ;;; hurd.scm ends here



reply via email to

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