{ 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;
        };
    };
  }