guix-commits
[Top][All Lists]
Advanced

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

16/21: services: Add `hurd-console-service-type'.


From: guix-commits
Subject: 16/21: services: Add `hurd-console-service-type'.
Date: Sun, 10 May 2020 10:07:41 -0400 (EDT)

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

commit fd0b0ab41404e5a8ae6649c48466b28c55e8188b
Author: Jan (janneke) Nieuwenhuizen <address@hidden>
AuthorDate: Sun Apr 12 22:17:03 2020 +0200

    services: Add `hurd-console-service-type'.
    
    * gnu/services/hurd.scm (<hurd-console-configuration>: New record.
    (hurd-console-shepherd-service): New function.
    (hurd-console-service-type): New variable.
    * doc/guix.texi (Hurd Services): Document it.
---
 doc/guix.texi         | 16 ++++++++++++++++
 gnu/services/hurd.scm | 43 ++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 733242b..b917c36 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -25735,6 +25735,22 @@ parameters, can be done as follow:
 @node Hurd Services
 @subsection Hurd Services
 
+@defvr {Scheme Variable} hurd-console-service-type
+This service starts the fancy @code{VGA} console client on the Hurd.
+
+The service's value is a @code{hurd-console-configuration} record.
+@end defvr
+
+@deftp {Data Type} hurd-console-configuration
+This is the data type representing the configuration for the
+hurd-console-service.
+
+@table @asis
+@item @code{hurd} (default: @var{hurd})
+The Hurd package to use.
+@end table
+@end deftp
+
 @deffn {Scheme Procedure} hurd-etc-service @var{os}
 This service implements a minimal @code{etc-service}, adding some
 specifics for the Hurd.
diff --git a/gnu/services/hurd.scm b/gnu/services/hurd.scm
index 6e57b22..27c674c 100644
--- a/gnu/services/hurd.scm
+++ b/gnu/services/hurd.scm
@@ -18,11 +18,15 @@
 
 (define-module (gnu services hurd)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages hurd)
   #:use-module (gnu services)
+  #:use-module (gnu services shepherd)
   #:use-module (gnu system)
   #:use-module (guix gexp)
   #:use-module (guix records)
-  #:export (hurd-etc-service))
+  #:export (hurd-console-configuration
+            hurd-console-service-type
+            hurd-etc-service))
 
 ;;; Commentary:
 ;;;
@@ -58,4 +62,41 @@ fi\n"))
        ("login" ,(file-append hurd "/etc/login"))
        ("motd" ,(file-append hurd "/etc/motd"))))))
 
+;;;
+;;; The Hurd VGA console service.
+;;;
+
+(define-record-type* <hurd-console-configuration>
+  hurd-console-configuration make-hurd-console-configuration
+  hurd-console-configuration?
+  (hurd   hurd-console-configuration-hurd ;package
+          (default hurd)))
+
+(define (hurd-console-shepherd-service config)
+  "Return a <shepherd-service> for a Hurd VGA console with CONFIG."
+
+  (define console-command
+    #~(list
+       (string-append #$(hurd-console-configuration-hurd config) 
"/bin/console")
+       "-c" "/dev/vcs"
+       "-d" "vga"
+       "-d" "pc_kbd"
+       "-d" "generic_speaker"))
+
+  (list (shepherd-service
+         (documentation "Run the Hurd’s VGA console client.")
+         (provision '(console))
+         (requirement '(user-processes))
+         (start #~(make-forkexec-constructor #$console-command))
+         (stop #~(make-kill-destructor)))))
+
+(define hurd-console-service-type
+  (service-type
+   (name 'console)
+   (description "Run the Hurd console client.")
+   (extensions
+    (list (service-extension shepherd-root-service-type
+                             hurd-console-shepherd-service)))
+   (default-value (hurd-console-configuration))))
+
 ;;; hurd.scm ends here



reply via email to

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