aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/lib/qemu-flags.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/lib/qemu-flags.nix')
-rw-r--r--nixpkgs/nixos/lib/qemu-flags.nix15
1 files changed, 10 insertions, 5 deletions
diff --git a/nixpkgs/nixos/lib/qemu-flags.nix b/nixpkgs/nixos/lib/qemu-flags.nix
index 859d9e975fe..0f066245893 100644
--- a/nixpkgs/nixos/lib/qemu-flags.nix
+++ b/nixpkgs/nixos/lib/qemu-flags.nix
@@ -2,13 +2,18 @@
{ pkgs }:
let
- zeroPad = n: if n < 10 then "0${toString n}" else toString n;
+ zeroPad = n:
+ pkgs.lib.optionalString (n < 16) "0" +
+ (if n > 255
+ then throw "Can't have more than 255 nets or nodes!"
+ else pkgs.lib.toHexString n);
in
-{
+rec {
+ qemuNicMac = net: machine: "52:54:00:12:${zeroPad net}:${zeroPad machine}";
qemuNICFlags = nic: net: machine:
- [ "-device virtio-net-pci,netdev=vlan${toString nic},mac=52:54:00:12:${zeroPad net}:${zeroPad machine}"
+ [ "-device virtio-net-pci,netdev=vlan${toString nic},mac=${qemuNicMac net machine}"
"-netdev vde,id=vlan${toString nic},sock=$QEMU_VDE_SOCKET_${toString net}"
];
@@ -17,9 +22,9 @@ in
else throw "Unknown QEMU serial device for system '${pkgs.stdenv.hostPlatform.system}'";
qemuBinary = qemuPkg: {
- x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu host";
+ x86_64-linux = "${qemuPkg}/bin/qemu-kvm -cpu max";
armv7l-linux = "${qemuPkg}/bin/qemu-system-arm -enable-kvm -machine virt -cpu host";
aarch64-linux = "${qemuPkg}/bin/qemu-system-aarch64 -enable-kvm -machine virt,gic-version=host -cpu host";
- x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu host";
+ x86_64-darwin = "${qemuPkg}/bin/qemu-kvm -cpu max";
}.${pkgs.stdenv.hostPlatform.system} or "${qemuPkg}/bin/qemu-kvm";
}