aboutsummaryrefslogtreecommitdiff
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"