forked from mirrors/nixpkgs
modules/virtualisation: add hyperv-image
This module implements builder for hyper-v images.
This commit is contained in:
parent
ae6bdcc535
commit
54b04af86e
69
nixos/modules/virtualisation/hyperv-image.nix
Normal file
69
nixos/modules/virtualisation/hyperv-image.nix
Normal file
|
@ -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 a new issue