This module implements builder for hyper-v images.wip/yesman
parent
ae6bdcc535
commit
54b04af86e
@ -0,0 +1,69 @@ |
||||
{ config, pkgs, lib, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.hyperv; |
||||
|
||||
in { |
||||
options = { |
||||
hyperv = { |
||||
baseImageSize = mkOption { |
||||
type = types.int; |
||||
default = 2048; |
||||
description = '' |
||||
The size of the hyper-v base image in MiB. |
||||
''; |
||||
}; |
||||
vmDerivationName = mkOption { |
||||
type = types.str; |
||||
default = "nixos-hyperv-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}"; |
||||
description = '' |
||||
The name of the derivation for the hyper-v appliance. |
||||
''; |
||||
}; |
||||
vmFileName = mkOption { |
||||
type = types.str; |
||||
default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.vhdx"; |
||||
description = '' |
||||
The file name of the hyper-v appliance. |
||||
''; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
config = { |
||||
system.build.hypervImage = import ../../lib/make-disk-image.nix { |
||||
name = cfg.vmDerivationName; |
||||
postVM = '' |
||||
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=dynamic -O vhdx $diskImage $out/${cfg.vmFileName} |
||||
''; |
||||
format = "raw"; |
||||
diskSize = cfg.baseImageSize; |
||||
partitionTableType = "efi"; |
||||
inherit config lib pkgs; |
||||
}; |
||||
|
||||
fileSystems."/" = { |
||||
device = "/dev/disk/by-label/nixos"; |
||||
autoResize = true; |
||||
fsType = "ext4"; |
||||
}; |
||||
|
||||
fileSystems."/boot" = { |
||||
device = "/dev/disk/by-label/ESP"; |
||||
fsType = "vfat"; |
||||
}; |
||||
|
||||
boot.growPartition = true; |
||||
|
||||
boot.loader.grub = { |
||||
version = 2; |
||||
device = "nodev"; |
||||
efiSupport = true; |
||||
efiInstallAsRemovable = true; |
||||
}; |
||||
|
||||
virtualisation.hypervGuest.enable = true; |
||||
}; |
||||
} |
Loading…
Reference in new issue