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.
This commit is contained in:
Jan (janneke) Nieuwenhuizen 2020-05-07 11:14:01 +02:00 committed by Jan Nieuwenhuizen
parent f9c04580bf
commit 7ccd471c71
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273
2 changed files with 74 additions and 1 deletions

View file

@ -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

View file

@ -25,7 +25,9 @@ (define-module (gnu services hurd)
#: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 @@ (define hurd-console-service-type
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