mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-21 11:34:13 +00:00
nixos/qemu: Add QEMU arguments for HVF on Darwin
Only support the same architechture for now, no emulation. Related to #108984.
This commit is contained in:
parent
8a25d56a6d
commit
e0fd131310
@ -23,12 +23,42 @@ rec {
|
|||||||
else if (with pkgs.stdenv.hostPlatform; isAarch || isPower) then "ttyAMA0"
|
else if (with pkgs.stdenv.hostPlatform; isAarch || isPower) then "ttyAMA0"
|
||||||
else throw "Unknown QEMU serial device for system '${pkgs.stdenv.hostPlatform.system}'";
|
else throw "Unknown QEMU serial device for system '${pkgs.stdenv.hostPlatform.system}'";
|
||||||
|
|
||||||
qemuBinary = qemuPkg: {
|
qemuBinary = qemuPkg:
|
||||||
x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu max";
|
let
|
||||||
armv7l-linux = "${qemuPkg}/bin/qemu-system-arm -machine virt,accel=kvm:tcg -cpu max";
|
hostStdenv = qemuPkg.stdenv;
|
||||||
aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -machine virt,gic-version=max,accel=kvm:tcg -cpu max";
|
hostSystem = hostStdenv.system;
|
||||||
powerpc64le-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
|
guestSystem = pkgs.stdenv.hostPlatform.system;
|
||||||
powerpc64-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
|
|
||||||
x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu max";
|
linuxHostGuestMatrix = {
|
||||||
}.${pkgs.stdenv.hostPlatform.system} or "${qemuPkg}/bin/qemu-kvm";
|
x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu max";
|
||||||
|
armv7l-linux = "${qemuPkg}/bin/qemu-system-arm -machine virt,accel=kvm:tcg -cpu max";
|
||||||
|
aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -machine virt,gic-version=max,accel=kvm:tcg -cpu max";
|
||||||
|
powerpc64le-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
|
||||||
|
powerpc64-linux = "${qemuPkg}/bin/qemu-system-ppc64 -machine powernv";
|
||||||
|
x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu max";
|
||||||
|
};
|
||||||
|
otherHostGuestMatrix = {
|
||||||
|
aarch64-darwin = {
|
||||||
|
aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -machine virt,gic-version=2,accel=hvf:tcg -cpu max";
|
||||||
|
};
|
||||||
|
x86_64-darwin = {
|
||||||
|
x86_64-linux = "${qemuPkg}/bin/qemu-system-x86_64 -machine type=q35,accel=hvf:tcg -cpu max";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
throwUnsupportedHostSystem =
|
||||||
|
let
|
||||||
|
supportedSystems = [ "linux" ] ++ (lib.attrNames otherHostGuestMatrix);
|
||||||
|
in
|
||||||
|
throw "Unsupported host system ${hostSystem}, supported: ${lib.concatStringsSep ", " supportedSystems}";
|
||||||
|
throwUnsupportedGuestSystem = guestMap:
|
||||||
|
throw "Unsupported guest system ${guestSystem} for host ${hostSystem}, supported: ${lib.concatStringsSep ", " (lib.attrNames guestMap)}";
|
||||||
|
in
|
||||||
|
if hostStdenv.isLinux then
|
||||||
|
linuxHostGuestMatrix.${guestSystem} or "${qemuPkg}/bin/qemu-kvm"
|
||||||
|
else
|
||||||
|
let
|
||||||
|
guestMap = (otherHostGuestMatrix.${hostSystem} or throwUnsupportedHostSystem);
|
||||||
|
in
|
||||||
|
(guestMap.${guestSystem} or (throwUnsupportedGuestSystem guestMap));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user