dxvk_1: fix build compatibility with GCC 14 (#360918)
[NixPkgs.git] / nixos / modules / virtualisation / azure-image.nix
blob53021e635b073c0c37e756151ebab530eafbeea9
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
8 with lib;
9 let
10   cfg = config.virtualisation.azureImage;
13   imports = [
14     ./azure-common.nix
15     ./disk-size-option.nix
16     ../image/file-options.nix
17     (lib.mkRenamedOptionModuleWith {
18       sinceRelease = 2411;
19       from = [
20         "virtualisation"
21         "azureImage"
22         "diskSize"
23       ];
24       to = [
25         "virtualisation"
26         "diskSize"
27       ];
28     })
29   ];
31   options.virtualisation.azureImage = {
32     bootSize = mkOption {
33       type = types.int;
34       default = 256;
35       description = ''
36         ESP partition size. Unit is MB.
37         Only effective when vmGeneration is `v2`.
38       '';
39     };
41     contents = mkOption {
42       type = with types; listOf attrs;
43       default = [ ];
44       description = ''
45         Extra contents to add to the image.
46       '';
47     };
49     vmGeneration = mkOption {
50       type =
51         with types;
52         enum [
53           "v1"
54           "v2"
55         ];
56       default = "v1";
57       description = ''
58         VM Generation to use.
59         For v2, secure boot needs to be turned off during creation.
60       '';
61     };
62   };
64   config = {
65     image.extension = "vhd";
66     system.nixos.tags = [ "azure" ];
67     system.build.image = config.system.build.azureImage;
68     system.build.azureImage = import ../../lib/make-disk-image.nix {
69       name = "azure-image";
70       inherit (config.image) baseName;
71       postVM = ''
72         ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=fixed,force_size -O vpc $diskImage $out/${config.image.fileName}
73         rm $diskImage
74       '';
75       configFile = ./azure-config-user.nix;
76       format = "raw";
78       bootSize = "${toString cfg.bootSize}M";
79       partitionTableType = if cfg.vmGeneration == "v2" then "efi" else "legacy";
81       inherit (cfg) contents;
82       inherit (config.virtualisation) diskSize;
83       inherit config lib pkgs;
84     };
85   };