Use overlayfs instead of unionfs-fuse in the VM tests
Overlayfs is quite a bit faster, e.g. with it the KDE 5 test takes ~7m instead of ~30m on my laptop (which is still not great, since plain 9pfs is ~4m30s).
This commit is contained in:
parent
9e6ac83f2a
commit
ea46420fc0
@ -278,7 +278,7 @@ in
|
|||||||
description =
|
description =
|
||||||
''
|
''
|
||||||
If enabled, the Nix store in the VM is made writable by
|
If enabled, the Nix store in the VM is made writable by
|
||||||
layering a unionfs-fuse/tmpfs filesystem on top of the host's Nix
|
layering an overlay filesystem on top of the host's Nix
|
||||||
store.
|
store.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
@ -395,6 +395,13 @@ in
|
|||||||
chmod 1777 $targetRoot/tmp
|
chmod 1777 $targetRoot/tmp
|
||||||
|
|
||||||
mkdir -p $targetRoot/boot
|
mkdir -p $targetRoot/boot
|
||||||
|
|
||||||
|
${optionalString cfg.writableStore ''
|
||||||
|
echo "mounting overlay filesystem on /nix/store..."
|
||||||
|
mkdir -p 0755 $targetRoot/nix/.rw-store/store $targetRoot/nix/.rw-store/work $targetRoot/nix/store
|
||||||
|
mount -t overlay overlay $targetRoot/nix/store \
|
||||||
|
-o lowerdir=$targetRoot/nix/.ro-store,upperdir=$targetRoot/nix/.rw-store/store,workdir=$targetRoot/nix/.rw-store/work || fail
|
||||||
|
''}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# After booting, register the closure of the paths in
|
# After booting, register the closure of the paths in
|
||||||
@ -412,7 +419,8 @@ in
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
boot.initrd.availableKernelModules =
|
boot.initrd.availableKernelModules =
|
||||||
optional (cfg.qemu.diskInterface == "scsi") "sym53c8xx";
|
optional cfg.writableStore "overlay"
|
||||||
|
++ optional (cfg.qemu.diskInterface == "scsi") "sym53c8xx";
|
||||||
|
|
||||||
virtualisation.bootDevice =
|
virtualisation.bootDevice =
|
||||||
mkDefault (if cfg.qemu.diskInterface == "scsi" then "/dev/sda" else "/dev/vda");
|
mkDefault (if cfg.qemu.diskInterface == "scsi" then "/dev/sda" else "/dev/vda");
|
||||||
@ -447,12 +455,6 @@ in
|
|||||||
options = [ "trans=virtio" "version=9p2000.L" ];
|
options = [ "trans=virtio" "version=9p2000.L" ];
|
||||||
neededForBoot = true;
|
neededForBoot = true;
|
||||||
};
|
};
|
||||||
} // optionalAttrs cfg.writableStore
|
|
||||||
{ "/nix/store" =
|
|
||||||
{ fsType = "unionfs-fuse";
|
|
||||||
device = "unionfs";
|
|
||||||
options = [ "allow_other" "cow" "nonempty" "chroot=/mnt-root" "max_files=32768" "hide_meta_files" "dirs=/nix/.rw-store=rw:/nix/.ro-store=ro" ];
|
|
||||||
};
|
|
||||||
} // optionalAttrs (cfg.writableStore && cfg.writableStoreUseTmpfs)
|
} // optionalAttrs (cfg.writableStore && cfg.writableStoreUseTmpfs)
|
||||||
{ "/nix/.rw-store" =
|
{ "/nix/.rw-store" =
|
||||||
{ fsType = "tmpfs";
|
{ fsType = "tmpfs";
|
||||||
|
Loading…
Reference in New Issue
Block a user