summary refs log tree commit diff
path: root/gnu/system/vm.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/system/vm.scm')
-rw-r--r--gnu/system/vm.scm37
1 files changed, 27 insertions, 10 deletions
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index c6ec25a895..04d84b5220 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -158,7 +158,9 @@
                                              (references-graphs #f)
                                              (memory-size 256)
                                              (disk-image-format "qcow2")
-                                             (disk-image-size 'guess))
+                                             (disk-image-size 'guess)
+
+                                             (substitutable? #t))
   "Evaluate EXP in a QEMU virtual machine running LINUX with INITRD (a
 derivation).  The virtual machine runs with MEMORY-SIZE MiB of memory.  In the
 virtual machine, EXP has access to FILE-SYSTEMS, which, by default, includes a
@@ -175,7 +177,10 @@ based on the size of the closure of REFERENCES-GRAPHS.
 
 When REFERENCES-GRAPHS is true, it must be a list of file name/store path
 pairs, as for `derivation'.  The files containing the reference graphs are
-made available under the /xchg CIFS share."
+made available under the /xchg CIFS share.
+
+SUBSTITUTABLE? determines whether the returned derivation should be marked as
+substitutable."
   (define user-builder
     (program-file "builder-in-linux-vm" exp))
 
@@ -257,7 +262,8 @@ made available under the /xchg CIFS share."
                       #:target target
                       #:env-vars env-vars
                       #:guile-for-build guile-for-build
-                      #:references-graphs references-graphs)))
+                      #:references-graphs references-graphs
+                      #:substitutable? substitutable?)))
 
 (define (has-guix-service-type? os)
   "Return true if OS contains a service of the type GUIX-SERVICE-TYPE."
@@ -277,7 +283,8 @@ made available under the /xchg CIFS share."
                         bootloader
                         (register-closures? (has-guix-service-type? os))
                         (inputs '())
-                        (grub-mkrescue-environment '()))
+                        (grub-mkrescue-environment '())
+                        (substitutable? #t))
   "Return a bootable, stand-alone iso9660 image.
 
 INPUTS is a list of inputs (as for packages)."
@@ -348,6 +355,7 @@ INPUTS is a list of inputs (as for packages)."
    #:make-disk-image? #f
    #:single-file-output? #t
    #:references-graphs inputs
+   #:substitutable? substitutable?
 
    ;; Xorriso seems to be quite memory-hungry, so increase the VM's RAM size.
    #:memory-size 512))
@@ -367,7 +375,8 @@ INPUTS is a list of inputs (as for packages)."
                      bootloader
                      (register-closures? (has-guix-service-type? os))
                      (inputs '())
-                     copy-inputs?)
+                     copy-inputs?
+                     (substitutable? #t))
   "Return a bootable, stand-alone QEMU image of type DISK-IMAGE-FORMAT (e.g.,
 'qcow2' or 'raw'), with a root partition of type FILE-SYSTEM-TYPE.
 Optionally, FILE-SYSTEM-LABEL can be specified as the volume name for the root
@@ -495,7 +504,8 @@ system."
    #:make-disk-image? #t
    #:disk-image-size disk-image-size
    #:disk-image-format disk-image-format
-   #:references-graphs inputs))
+   #:references-graphs inputs
+   #:substitutable? substitutable?))
 
 (define* (system-docker-image os
                               #:key
@@ -650,11 +660,15 @@ TYPE (one of 'iso9660 or 'dce).  Return a UUID object."
                             (name "disk-image")
                             (file-system-type "ext4")
                             (disk-image-size (* 900 (expt 2 20)))
-                            (volatile? #t))
+                            (volatile? #t)
+                            (substitutable? #t))
   "Return the derivation of a disk image of DISK-IMAGE-SIZE bytes of the
 system described by OS.  Said image can be copied on a USB stick as is.  When
 VOLATILE? is true, the root file system is made volatile; this is useful
-to USB sticks meant to be read-only."
+to USB sticks meant to be read-only.
+
+SUBSTITUTABLE? determines whether the returned derivation should be marked as
+substitutable."
   (define normalize-label
     ;; ISO labels are all-caps (case-insensitive), but since
     ;; 'find-partition-by-label' is case-sensitive, make it all-caps here.
@@ -723,7 +737,8 @@ to USB sticks meant to be read-only."
                        #:inputs `(("system" ,os)
                                   ("bootcfg" ,bootcfg))
                        #:grub-mkrescue-environment
-                       '(("MKRESCUE_SED_MODE" . "mbr_hfs")))
+                       '(("MKRESCUE_SED_MODE" . "mbr_hfs"))
+                       #:substitutable? substitutable?)
         (qemu-image #:name name
                     #:os os
                     #:bootcfg-drv bootcfg
@@ -736,7 +751,8 @@ to USB sticks meant to be read-only."
                     #:file-system-uuid uuid
                     #:copy-inputs? #t
                     #:inputs `(("system" ,os)
-                               ("bootcfg" ,bootcfg))))))
+                               ("bootcfg" ,bootcfg))
+                    #:substitutable? substitutable?))))
 
 (define* (system-qemu-image os
                             #:key
@@ -925,6 +941,7 @@ with '-virtfs' options for the host file systems listed in SHARED-FS."
             '())
 
      "-no-reboot"
+     "-nic" "user,model=virtio-net-pci"
      "-object" "rng-random,filename=/dev/urandom,id=guixsd-vm-rng"
      "-device" "virtio-rng-pci,rng=guixsd-vm-rng"