- fileSystems = mkVMOverride {
- "${storeMountPath}" = {
- device =
- lookupDriveDeviceName "nixstore" config.virtualisation.qemu.drives;
- fsType = "squashfs";
- options = [ "ro" ];
- neededForBoot = true;
- };
+ nixStoreImages = {
+ ext4 = import (modulesPath + "/../lib/make-disk-image.nix") {
+ inherit pkgs config lib;
+ additionalPaths = [ storeContents ];
+ onlyNixStore = true;
+ label = "nix-store";
+ partitionTableType = "none";
+ installBootLoader = false;
+ diskSize = "auto";
+ additionalSpace = "0M";
+ copyChannel = false;
+ };
+ erofs = hostPkgs.runCommand "nix-store-image" { } ''
+ mkdir $out
+ cd ${builtins.storeDir}
+ ${hostPkgs.erofs-utils}/bin/mkfs.erofs \
+ --force-uid=0 \
+ --force-gid=0 \
+ -L nix-store \
+ -U eb176051-bd15-49b7-9e6b-462e0b467019 \
+ -T 0 \
+ --exclude-regex="$(
+ <${storeContents}/store-paths \
+ sed -e 's^.*/^^g' \
+ | cut -c -10 \
+ | ${hostPkgs.python3}/bin/python -c ${
+ escapeShellArg (builtins.readFile
+ (modulesPath + "/virtualisation/includes-to-excludes.py"))
+ } )" \
+ $out/nixos.img \
+ .
+ '';
+ };
+
+in {
+ options = {
+ virtualisation.qemu.isolation.nixStoreFilesystemType = mkOption {
+ description = ''
+ What filesystem to use for the guest's Nix store.
+
+ erofs is more compact than ext4, but less mature.
+ '';
+ type = lib.types.enum [ "ext4" "erofs" ];
+ default = "ext4";