summaryrefslogtreecommitdiff
path: root/gnu/system
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-04-08 12:22:18 +0200
committerLudovic Courtès <ludo@gnu.org>2020-04-08 12:42:41 +0200
commita328f66a9e16d7bae765d8bc088e4a97037e6e2b (patch)
treed0847ba1002b3c80aeda2b35d10fcfa51b910304 /gnu/system
parentba6f2bda18ed19fa486a9c3e2c3baea6c66c6867 (diff)
vm: Allow images to be marked as non-substitutable.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add #:substitutable? parameter. Pass it to 'gexp->derivation'. (qemu-image): Add #:substitutable? and pass it to 'expression->derivation-in-linux-vm'. (system-disk-image): Add #:substitutable? and pass it to 'qemu-image'.
Diffstat (limited to 'gnu/system')
-rw-r--r--gnu/system/vm.scm29
1 files changed, 21 insertions, 8 deletions
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index c6ec25a895..60a41584d0 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."
@@ -367,7 +373,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 +502,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 +658,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.
@@ -736,7 +748,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