about summary refs log tree commit diff
path: root/nixos/modules/virtualisation
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2023-05-06 21:41:14 +0200
committerGitHub <noreply@github.com>2023-05-06 21:41:14 +0200
commit567490160158d4ffe870a62ae8ed58c271279a67 (patch)
treeb1177b21017abee2e72215c4229e5ad45979468a /nixos/modules/virtualisation
parent558aba32b5349f1165541cf0d9c8858afee7c631 (diff)
Revert "nixos/qemu-vm: fix diskless VMs"
Diffstat (limited to 'nixos/modules/virtualisation')
-rw-r--r--nixos/modules/virtualisation/qemu-vm.nix27
1 files changed, 8 insertions, 19 deletions
diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix
index b3f5bc7514c2b..5f6bf4b39e974 100644
--- a/nixos/modules/virtualisation/qemu-vm.nix
+++ b/nixos/modules/virtualisation/qemu-vm.nix
@@ -272,7 +272,7 @@ let
   suggestedRootDevice = {
     "efi_bootloading_with_default_fs" = "${cfg.bootLoaderDevice}2";
     "legacy_bootloading_with_default_fs" = "${cfg.bootLoaderDevice}1";
-    "direct_boot_with_default_fs" = lookupDriveDeviceName "root" cfg.qemu.drives;
+    "direct_boot_with_default_fs" = cfg.bootLoaderDevice;
     # This will enforce a NixOS module type checking error
     # to ask explicitly the user to set a rootDevice.
     # As it will look like `rootDevice = lib.mkDefault null;` after
@@ -344,14 +344,14 @@ in
 
     virtualisation.bootLoaderDevice =
       mkOption {
-        type = types.nullOr types.path;
-        default = if cfg.useBootLoader then lookupDriveDeviceName "root" cfg.qemu.drives else null;
-        defaultText = literalExpression ''if cfg.useBootLoader then lookupDriveDeviceName "root" cfg.qemu.drives else null;'';
+        type = types.path;
+        default = lookupDriveDeviceName "root" cfg.qemu.drives;
+        defaultText = literalExpression ''lookupDriveDeviceName "root" cfg.qemu.drives'';
         example = "/dev/vda";
         description =
           lib.mdDoc ''
             The disk to be used for the boot filesystem.
-            By default, it is the same disk as the root filesystem if you use a bootloader, otherwise it's null.
+            By default, it is the same disk as the root filesystem.
           '';
         };
 
@@ -862,16 +862,6 @@ in
                 Invalid virtualisation.forwardPorts.<entry ${toString i}>.guest.address:
                   The address must be in the default VLAN (10.0.2.0/24).
               '';
-            }
-          { assertion = cfg.useBootLoader -> cfg.diskImage != null;
-            message =
-              ''
-                Currently, bootloaders cannot be used with a tmpfs disk image.
-                It would require some rework in the boot configuration mechanism
-                to detect the proper boot partition in UEFI scenarios for example.
-
-                If you are interested into this feature, please open an issue or open a pull request.
-              '';
           }
         ]));
 
@@ -899,8 +889,7 @@ in
     # legacy and UEFI. In order to avoid this, we have to put "nodev" to force UEFI-only installs.
     # Otherwise, we set the proper bootloader device for this.
     # FIXME: make a sense of this mess wrt to multiple ESP present in the system, probably use boot.efiSysMountpoint?
-    boot.loader.grub.enable = cfg.useBootLoader;
-    boot.loader.grub.device = mkIf cfg.useBootLoader (mkVMOverride (if cfg.useEFIBoot then "nodev" else cfg.bootLoaderDevice));
+    boot.loader.grub.device = mkVMOverride (if cfg.useEFIBoot then "nodev" else cfg.bootLoaderDevice);
     boot.loader.grub.gfxmodeBios = with cfg.resolution; "${toString x}x${toString y}";
     virtualisation.rootDevice = mkDefault suggestedRootDevice;
 
@@ -908,13 +897,13 @@ in
 
     boot.loader.supportsInitrdSecrets = mkIf (!cfg.useBootLoader) (mkVMOverride false);
 
-    boot.initrd.extraUtilsCommands = lib.mkIf (cfg.useDefaultFilesystems && !config.boot.initrd.systemd.enable && cfg.diskImage != null)
+    boot.initrd.extraUtilsCommands = lib.mkIf (cfg.useDefaultFilesystems && !config.boot.initrd.systemd.enable)
       ''
         # We need mke2fs in the initrd.
         copy_bin_and_libs ${pkgs.e2fsprogs}/bin/mke2fs
       '';
 
-    boot.initrd.postDeviceCommands = lib.mkIf (cfg.useDefaultFilesystems && !config.boot.initrd.systemd.enable && cfg.diskImage != null)
+    boot.initrd.postDeviceCommands = lib.mkIf (cfg.useDefaultFilesystems && !config.boot.initrd.systemd.enable)
       ''
         # If the disk image appears to be empty, run mke2fs to
         # initialise.