Subject: [bug#66156] [PATCH 08/12] services: hurd-vm: ‘image’ field has to be an <image> record.

From: Ludovic Courtès <[email-masked]>
Date: Fri, 22 Sep 2023 14:54:09 +0200

* gnu/services/virtualization.scm (<hurd-vm-configuration>)[image]:
Document as being an <image> record.
(hurd-vm-disk-image): Remove call to ‘system-image’.
(hurd-vm-shepherd-service): Add call to ‘system-image’.
* gnu/tests/virtualization.scm (hurd-vm-disk-image-raw): Remove call to
‘system-image’.
* doc/guix.texi (Virtualization Services): Adjust accordingly.
---
 doc/guix.texi                   |  4 ++--
 gnu/services/virtualization.scm |  9 ++++-----
 gnu/tests/virtualization.scm    | 11 +++++------
 3 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index ca48d6c404..472e2e0958 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -35766,8 +35766,8 @@ Virtualization Services
 The QEMU package to use.
 
 @item @code{image} (default: @var{hurd-vm-disk-image})
-The procedure used to build the disk-image built from this
-configuration.
+The image object representing the disk image of this virtual machine
+(@pxref{System Images}).
 
 @item @code{disk-size} (default: @code{'guess})
 The size of the disk image.
diff --git a/gnu/services/virtualization.scm b/gnu/services/virtualization.scm
index ca000f5d28..258b503461 100644
--- a/gnu/services/virtualization.scm
+++ b/gnu/services/virtualization.scm
@@ -1101,7 +1101,7 @@ (define-record-type* <hurd-vm-configuration>
                (default %hurd-vm-operating-system))
   (qemu        hurd-vm-configuration-qemu               ;file-like
                (default qemu-minimal))
-  (image       hurd-vm-configuration-image              ;string
+  (image       hurd-vm-configuration-image              ;<image>
                (thunked)
                (default (hurd-vm-disk-image this-record)))
   (disk-size   hurd-vm-configuration-disk-size          ;number or 'guess
@@ -1126,9 +1126,8 @@ (define (hurd-vm-disk-image config)
          (disk-size (hurd-vm-configuration-disk-size config))
          (type      (lookup-image-type-by-name 'hurd-qcow2))
          (os->image (image-type-constructor type)))
-    (system-image
-     (image (inherit (os->image os))
-            (size disk-size)))))
+    (image (inherit (os->image os))
+           (size disk-size))))
 
 (define (hurd-vm-port config base)
   "Return the forwarded vm port for this childhurd config."
@@ -1170,7 +1169,7 @@ (define (hurd-vm-shepherd-service config)
                       "-m" (number->string #$memory-size)
                       #$@net-options
                       #$@options
-                      "--hda" #+image
+                      "--hda" #+(system-image image)
 
                       ;; Cause the service to be respawned if the guest
                       ;; reboots (it can reboot for instance if it did not
diff --git a/gnu/tests/virtualization.scm b/gnu/tests/virtualization.scm
index 73c8099b79..41253968e9 100644
--- a/gnu/tests/virtualization.scm
+++ b/gnu/tests/virtualization.scm
@@ -230,12 +230,11 @@ (define (hurd-vm-disk-image-raw config)
   (let ((os ((@@ (gnu services virtualization) secret-service-operating-system)
              (hurd-vm-configuration-os config)))
         (disk-size (hurd-vm-configuration-disk-size config)))
-    (system-image
-     (image
-      (inherit hurd-disk-image)
-      (format 'disk-image)
-      (size disk-size)
-      (operating-system os)))))
+    (image
+     (inherit hurd-disk-image)
+     (format 'disk-image)
+     (size disk-size)
+     (operating-system os))))
 
 (define %childhurd-os
   (simple-operating-system
-- 
2.41.0