{ config, lib, options, pkgs, ... }: let vmOptions = { }; in { options = { virtualisation = { vmVariant = vmOptions; vmVariantWithBootLoader = vmOptions; }; }; config = { # Replace native `qemu` with `remote-viewer` system.build = { vm = let packageName = "custom-nixos-vm"; mergedSystem = with options.system; lib.mergeDefinitions build.loc build.type (lib.lists.forEach ( builtins.filter (item: !(lib.path.hasPrefix ./. (/. + item.file))) build.definitionsWithLocations) (item: { inherit (item) file value; })); in lib.mkForce ( if (mergedSystem.mergedValue.vm.name == packageName) then mergedSystem.mergedValue.vm else let wrapped = pkgs.writeShellApplication { name = "run-${config.system.name}-vm"; text = '' ${mergedSystem.mergedValue.vm}/bin/run-${config.system.name}-vm ''; }; in # Rename package to `nixos-vm` pkgs.symlinkJoin { name = packageName; paths = [ wrapped ]; }); }; }; }