{ config, lib, pkgs, ... }: let createVmRunner = vmVariant: pkgs.writeShellApplication { name = "run-${config.system.name}-vm"; text = '' ${vmVariant.system.build.vm}/bin/run-${config.system.name}-vm ''; }; in { config = { # Replace native `qemu` with `remote-viewer` system.build = with { inherit (config.virtualisation) vmVariantWithBootLoader ; }; { vmWithBootLoader = createVmRunner vmVariantWithBootLoader; }; virtualisation = let vmConfig = { boot.loader.efi.efiSysMountPoint = lib.mkForce "/boot"; virtualisation = { qemu.options = [ "-display sdl" ]; sharedDirectories = { hostKeys = { source = "/etc/ssh"; target = "/etc/ssh"; }; }; }; }; in { vmVariantWithBootLoader = vmConfig; }; }; }