LGTM! There are now three manual "-virtfs" arguments to qemu. It's starting to irk me a little. It might make sense to generate those from %linux-vm-filesystems in order to not have so much duplication and places where things can go wrong when maintaining. If you'd like, could you maybe pass the %linux-vm-filesystems to load-in-linux-vm and then automatically calculate those -virtfs entries? (In a future patchset - I don't wanna hold up this one) There's already common-qemu-options which would support , and %store-mapping, so actually it would make sense to use those (probably easiest to move build/vm.scm's load-in-linux-vm into system/vm.scm expression->derivation-in-linux-vm so the qemu stuff isn't scattered all over the place - right now, half is in gnu/system/vm.scm and a mostly redundant half is in gnu/build/vm.scm ... not ideal). There's a "mapping->file-system" helper, so it might make sense to use instead of in %linux-vm-filesystems. So all in all: * Modify %linux-vm-filesystems to be file-system-mappings instead of file-systems. Also modify the place it is used. * Move load-in-linux-vm to gnu/system/vm.scm (maybe inline into caller). * Modify load-in-linux-vm to use common-qemu-options. Notice that the "-append" option is passed twice. Bug... <-- I just fixed that in master If you want I can do it.