vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / virtualisation / azure-image.nix
blobecb57483cce9b008eb65de4bc175db4f08c41d1f
1 { config, lib, pkgs, ... }:
3 with lib;
4 let
5   cfg = config.virtualisation.azureImage;
6 in
8   imports = [ ./azure-common.nix ];
10   options.virtualisation.azureImage = {
11     diskSize = mkOption {
12       type = with types; either (enum [ "auto" ]) int;
13       default = "auto";
14       example = 2048;
15       description = ''
16         Size of disk image. Unit is MB.
17       '';
18     };
20     bootSize = mkOption {
21       type = types.int;
22       default = 256;
23       description = ''
24         ESP partition size. Unit is MB.
25         Only effective when vmGeneration is `v2`.
26       '';
27     };
29     contents = mkOption {
30       type = with types; listOf attrs;
31       default = [ ];
32       description = ''
33         Extra contents to add to the image.
34       '';
35     };
37     vmGeneration = mkOption {
38       type = with types; enum [ "v1" "v2" ];
39       default = "v1";
40       description = ''
41         VM Generation to use.
42         For v2, secure boot needs to be turned off during creation.
43       '';
44     };
45   };
47   config = {
48     system.build.azureImage = import ../../lib/make-disk-image.nix {
49       name = "azure-image";
50       postVM = ''
51         ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=fixed,force_size -O vpc $diskImage $out/disk.vhd
52         rm $diskImage
53       '';
54       configFile = ./azure-config-user.nix;
55       format = "raw";
57       bootSize = "${toString cfg.bootSize}M";
58       partitionTableType = if cfg.vmGeneration == "v2" then "efi" else "legacy";
60       inherit (cfg) diskSize contents;
61       inherit config lib pkgs;
62     };
63   };