anchor.diff:          };
       in
         mkVMOverride (cfg.fileSystems //
  -      {
  +      optionalAttrs cfg.useDefaultFilesystems {
           "/".device = cfg.bootDevice;
           "/".fsType = "ext4";
           "/".autoFormat = true;
  -
  -        "/tmp" = mkIf config.boot.tmpOnTmpfs
  -          { device = "tmpfs";
  -            fsType = "tmpfs";
  -            neededForBoot = true;
  -            # Sync with systemd's tmp.mount;
  -            options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmpOnTmpfsSize}" ];
  -          };
  -
  -        "/nix/${if cfg.writableStore then ".ro-store" else "store"}" =
  -          mkIf cfg.useNixStoreImage
  -            { device = "${lookupDriveDeviceName "nix-store" cfg.qemu.drives}";
  -              neededForBoot = true;
  -              options = [ "ro" ];
  -            };
  -
  -        "/nix/.rw-store" = mkIf (cfg.writableStore && cfg.writableStoreUseTmpfs)
  -          { fsType = "tmpfs";
  -            options = [ "mode=0755" ];
  -            neededForBoot = true;
  -          };
  -
  -        "/boot" = mkIf cfg.useBootLoader
  -          # see note [Disk layout with `useBootLoader`]
  -          { device = "${lookupDriveDeviceName "boot" cfg.qemu.drives}2"; # 2 for e.g. `vdb2`, as created in `bootDisk`
  -            fsType = "vfat";
  -            noCheck = true; # fsck fails on a r/o filesystem
  -          };
  +      } //
  +      optionalAttrs config.boot.tmpOnTmpfs {
  +        "/tmp" = {
  +          device = "tmpfs";
  +          fsType = "tmpfs";
  +          neededForBoot = true;
  +          # Sync with systemd's tmp.mount;
  +          options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmpOnTmpfsSize}" ];
  +        };
  +      } //
  +      optionalAttrs cfg.useNixStoreImage {
  +        "/nix/${if cfg.writableStore then ".ro-store" else "store"}" = {
  +          device = "${lookupDriveDeviceName "nix-store" cfg.qemu.drives}";
  +          neededForBoot = true;
  +          options = [ "ro" ];
  +        };
  +      } //
  +      optionalAttrs (cfg.writableStore && cfg.writableStoreUseTmpfs) {
  +        "/nix/.rw-store" = {
  +          fsType = "tmpfs";
  +          options = [ "mode=0755" ];
  +          neededForBoot = true;
  +        };
  +      } //
  +      optionalAttrs cfg.useBootLoader {
  +        # see note [Disk layout with `useBootLoader`]
  +        "/boot" = {
  +          device = "${lookupDriveDeviceName "boot" cfg.qemu.drives}2"; # 2 for e.g. `vdb2`, as created in `bootDisk`
  +          fsType = "vfat";
  +          noCheck = true; # fsck fails on a r/o filesystem
  +        };
         } // lib.mapAttrs' mkSharedDir cfg.sharedDirectories);
   
       boot.initrd.systemd = lib.mkIf (config.boot.initrd.systemd.enable && cfg.writableStore) {
  
positive.code:       };
      };
  
      swapDevices = mkVMOverride [ ];
      boot.initrd.luks.devices = mkVMOverride {};
  
      # Don't run ntpd in the guest.  It should get the correct time from KVM.
      services.timesyncd.enable = false;
  
negative.code:           '';
        };
  
      virtualisation.useDefaultFilesystems =
        mkOption {
          type = types.bool;
          default = true;
          description =
            ''
              If enabled, the boot disk of the virtual machine will be
              formatted and mounted with the default filesystems for
              testing. Swap devices and LUKS will be disabled.
  
              If disabled, a root filesystem has to be specified and
              formatted (for example in the initial ramdisk).
            '';
        };
  
      virtualisation.efiVars =
        mkOption {
          type = types.str;
  