janneke pushed a commit to branch wip-hurd-vm in repository guix. commit f6712c9ab11a71e88771fe306a6603eb2cd21827 Author: Jan (janneke) Nieuwenhuizen <jann...@gnu.org> AuthorDate: Mon Apr 13 10:36:56 2020 +0200
services: Add hurd-ttys-service-type. * gnu/services/hurd.scm (<hurd-ttys-configuration>): New variable. (hurd-ttys-shepherd-service, hurd-ttys-service-type): New function. (hurd-service->shepherd-service): Add entry. --- gnu/services/hurd.scm | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/gnu/services/hurd.scm b/gnu/services/hurd.scm index 34a8118..3394b79 100644 --- a/gnu/services/hurd.scm +++ b/gnu/services/hurd.scm @@ -26,8 +26,11 @@ #:use-module (guix records) #:use-module (srfi srfi-1) #:use-module (ice-9 match) - #:export (hurd-console-service-type - hurd-service->shepherd-service)) + #:export (hurd-console-configuration + hurd-console-service-type + hurd-service->shepherd-service + hurd-ttys-configuration + hurd-ttys-service-type)) ;;; Commentary: ;;; @@ -40,6 +43,7 @@ (let ((config (service-value service))) (match config (($ <hurd-console-configuration>) (hurd-console-shepherd-service config)) + (($ <hurd-ttys-configuration>) (hurd-ttys-shepherd-service config)) (_ '())))) @@ -83,4 +87,41 @@ (extend append) (default-value (hurd-console-configuration)))) + +;;; +;;; Simple wrapper for <hurd>/libexec/runttys. +;;; + +(define-record-type* <hurd-ttys-configuration> + hurd-ttys-configuration make-hurd-ttys-configuration + hurd-ttys-configuration? + (hurd hurd-ttys-configuration-hurd ;package + (default hurd))) + +(define (hurd-ttys-shepherd-service config) + "Return a <shepherd-service> for the Hurd ttys with CONFIG." + + (define runttys-command + #~(list + (string-append #$(hurd-ttys-configuration-hurd config) "/libexec/runttys"))) + + (list (shepherd-service + (documentation "Hurd ttys.") + (provision '(ttys)) + (requirement '(console)) + (start #~(lambda _ (fork+exec-command #$runttys-command) #t)) + (stop #~(make-kill-destructor))))) + +(define hurd-ttys-service-type + (service-type + (name 'tty) + (description + "Run a hurd ttys, @command{runttys}.") + (extensions + (list (service-extension shepherd-root-service-type + hurd-ttys-shepherd-service))) + (compose concatenate) + (extend append) + (default-value (hurd-ttys-configuration)))) + ;;; hurd.scm ends here