diff options
author | Jan (janneke) Nieuwenhuizen <janneke@gnu.org> | 2020-05-07 11:14:01 +0200 |
---|---|---|
committer | Jan Nieuwenhuizen <janneke@gnu.org> | 2020-06-08 14:26:14 +0200 |
commit | 7ccd471c71d650055e99cd02381bc8dcd86d5313 (patch) | |
tree | fff801b211dab87947ea50a42babbbfcf91b27b3 | |
parent | f9c04580bf5462bb088f47ad8fc6c3136649cbd6 (diff) | |
download | guix-7ccd471c71d650055e99cd02381bc8dcd86d5313.tar.gz |
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.
-rw-r--r-- | doc/guix.texi | 23 | ||||
-rw-r--r-- | gnu/services/hurd.scm | 52 |
2 files changed, 74 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 9a57b927da..13e3c017d3 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 36da8e218f..1ccf164223 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 |