make-disk-image: allow vmTools qemu usage to be overriden by disko configuration

This is needed to prevent two layers of emulation when offering a build for a host running binfmt such as an x86 host trying to compile for aarch64 via binfmt
This commit is contained in:
matthewcroughan 2024-07-08 20:12:36 +01:00
parent de015d2a44
commit d8a1d5e1f0
2 changed files with 11 additions and 2 deletions

View file

@ -9,6 +9,7 @@
let let
vmTools = pkgs.vmTools.override { vmTools = pkgs.vmTools.override {
rootModules = [ "9p" "9pnet_virtio" "virtio_pci" "virtio_blk" ] ++ nixosConfig.config.disko.extraRootModules; rootModules = [ "9p" "9pnet_virtio" "virtio_pci" "virtio_blk" ] ++ nixosConfig.config.disko.extraRootModules;
customQemu = nixosConfig.config.disko.imageBuilderQemu;
kernel = pkgs.aggregateModules kernel = pkgs.aggregateModules
(with nixosConfig.config.disko.imageBuilderKernelPackages; [ kernel ] (with nixosConfig.config.disko.imageBuilderKernelPackages; [ kernel ]
++ lib.optional (lib.elem "zfs" nixosConfig.config.disko.extraRootModules) zfs); ++ lib.optional (lib.elem "zfs" nixosConfig.config.disko.extraRootModules) zfs);

View file

@ -10,8 +10,16 @@ let
in in
{ {
options.disko = { options.disko = {
imageBuilderKernel = lib.mkOption { imageBuilderQemu = lib.mkOption {
type = lib.types.package; type = lib.types.nullOr lib.types.str;
description = ''
the qemu emulator string used when building disk images via make-disk-image.nix.
Useful when using binfmt on your build host, and wanting to build disk
images for a foreign architecture
'';
default = null;
example = lib.literalExpression "''${pkgs.qemu_kvm}/bin/qemu-system-aarch64";
};
imageBuilderPkgs = lib.mkOption { imageBuilderPkgs = lib.mkOption {
type = lib.types.attrs; type = lib.types.attrs;
description = '' description = ''