diff --git a/lib/config/custom-build-vm.nix b/lib/config/custom-build-vm.nix
index 8582ddd..ebc0cbe 100644
--- a/lib/config/custom-build-vm.nix
+++ b/lib/config/custom-build-vm.nix
@@ -1,20 +1,28 @@
 { config, lib, options, pkgs, ... }: {
-  options = {
+  options =
+  let
+    vmVariantOptions = {
+      virtualisation = {
+        runAsRoot = lib.mkOption {
+          type = lib.types.bool;
+          default = false;
+        };
+
+        sharedHostKeys = lib.mkOption {
+          type = lib.types.bool;
+          default = false;
+        };
+
+        qemu.runInBackground = lib.mkOption {
+          type = lib.types.bool;
+          default = false;
+        };
+      };
+    };
+  in {
     virtualisation = {
-      runAsRoot = lib.mkOption {
-        type = lib.types.bool;
-        default = false;
-      };
-
-      sharedHostKeys = lib.mkOption {
-        type = lib.types.bool;
-        default = false;
-      };
-
-      qemu.runInBackground = lib.mkOption {
-        type = lib.types.bool;
-        default = false;
-      };
+      vmVariant = vmVariantOptions;
+      vmVariantWithBootLoader = vmVariantOptions;
     };
   };
 
@@ -25,23 +33,25 @@
           vmVariant: {
             boot.loader.efi.efiSysMountPoint = lib.mkVMOverride "/boot";
 
-            virtualisation.sharedDirectories = lib.optionalAttrs (vmVariant.virtualisation.sharedHostKeys) {
-              hostKeys =
-              let
-                path = "/etc/ssh";
-              in {
-                source = path;
-                target = path;
+            virtualisation = {
+              runAsRoot = lib.mkIf vmVariant.virtualisation.sharedHostKeys true;
+
+              sharedDirectories = lib.optionalAttrs (vmVariant.virtualisation.sharedHostKeys) {
+                hostKeys =
+                let
+                  path = "/etc/ssh";
+                in {
+                  source = path;
+                  target = path;
+                };
               };
             };
           };
 
         virtualisation = config.virtualisation;
       in {
-        
         vmVariant = extendVMConfig virtualisation.vmVariant;
         vmVariantWithBootLoader = extendVMConfig virtualisation.vmVariantWithBootLoader;
-        runAsRoot = lib.mkIf config.virtualisation.sharedHostKeys true;
       };
 
     # Replace native `qemu` with `remote-viewer`