0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-13 21:50:33 +03:00

Merge pull request #180222 from YorikSar/qemu-vm-darwin-pkgs

nixos/qemu-vm: Allow to build and run VMs on Darwin
This commit is contained in:
Silvan Mosberger 2022-08-30 21:54:22 +02:00 committed by GitHub
commit 6eb620ace7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 66 additions and 19 deletions

View file

@ -102,7 +102,9 @@ let
# Shell script to start the VM.
startVM =
''
#! ${pkgs.runtimeShell}
#! ${cfg.host.pkgs.runtimeShell}
export PATH=${makeBinPath [ cfg.host.pkgs.coreutils ]}''${PATH:+:}$PATH
set -e
@ -574,11 +576,24 @@ in
description = "Primary IP address used in /etc/hosts.";
};
virtualisation.host.pkgs = mkOption {
type = options.nixpkgs.pkgs.type;
default = pkgs;
defaultText = "pkgs";
example = literalExpression ''
import pkgs.path { system = "x86_64-darwin"; }
'';
description = ''
pkgs set to use for the host-specific packages of the vm runner.
Changing this to e.g. a Darwin package set allows running NixOS VMs on Darwin.
'';
};
virtualisation.qemu = {
package =
mkOption {
type = types.package;
default = pkgs.qemu_kvm;
default = cfg.host.pkgs.qemu_kvm;
example = "pkgs.qemu_test";
description = lib.mdDoc "QEMU package to use.";
};
@ -1075,14 +1090,14 @@ in
services.qemuGuest.enable = cfg.qemu.guestAgent.enable;
system.build.vm = pkgs.runCommand "nixos-vm" {
system.build.vm = cfg.host.pkgs.runCommand "nixos-vm" {
preferLocalBuild = true;
meta.mainProgram = "run-${config.system.name}-vm";
}
''
mkdir -p $out/bin
ln -s ${config.system.build.toplevel} $out/system
ln -s ${pkgs.writeScript "run-nixos-vm" startVM} $out/bin/run-${config.system.name}-vm
ln -s ${cfg.host.pkgs.writeScript "run-nixos-vm" startVM} $out/bin/run-${config.system.name}-vm
'';
# When building a regular system configuration, override whatever