dxvk_1: fix build compatibility with GCC 14 (#360918)
[NixPkgs.git] / nixos / modules / virtualisation / vmware-image.nix
blob6eebc6910ff046950624ba78652a952129af61b6
2   config,
3   pkgs,
4   lib,
5   ...
6 }:
7 let
8   boolToStr = value: if value then "on" else "off";
9   cfg = config.vmware;
11   subformats = [
12     "monolithicSparse"
13     "monolithicFlat"
14     "twoGbMaxExtentSparse"
15     "twoGbMaxExtentFlat"
16     "streamOptimized"
17   ];
21   imports = [
22     ../image/file-options.nix
23     (lib.mkRenamedOptionModuleWith {
24       sinceRelease = 2505;
25       from = [
26         "virtualisation"
27         "vmware"
28         "vmFileName"
29       ];
30       to = [
31         "image"
32         "fileName"
33       ];
34     })
36   ];
38   options = {
39     vmware = {
40       baseImageSize = lib.mkOption {
41         type = with lib.types; either (enum [ "auto" ]) int;
42         default = "auto";
43         example = 2048;
44         description = ''
45           The size of the VMWare base image in MiB.
46         '';
47       };
48       vmDerivationName = lib.mkOption {
49         type = lib.types.str;
50         default = "nixos-vmware-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}";
51         description = ''
52           The name of the derivation for the VMWare appliance.
53         '';
54       };
55       vmSubformat = lib.mkOption {
56         type = lib.types.enum subformats;
57         default = "monolithicSparse";
58         description = "Specifies which VMDK subformat to use.";
59       };
60       vmCompat6 = lib.mkOption {
61         type = lib.types.bool;
62         default = false;
63         example = true;
64         description = "Create a VMDK version 6 image (instead of version 4).";
65       };
66     };
67   };
69   config = {
70     system.nixos.tags = [ "vmware" ];
71     image.extension = "vmdk";
72     system.build.image = config.system.build.vmwareImage;
73     system.build.vmwareImage = import ../../lib/make-disk-image.nix {
74       name = cfg.vmDerivationName;
75       baseName = config.image.baseName;
76       postVM = ''
77         ${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o compat6=${boolToStr cfg.vmCompat6},subformat=${cfg.vmSubformat} -O vmdk $diskImage $out/${config.image.fileName}
78         rm $diskImage
79       '';
80       format = "raw";
81       diskSize = cfg.baseImageSize;
82       partitionTableType = "efi";
83       inherit config lib pkgs;
84     };
86     fileSystems."/" = {
87       device = "/dev/disk/by-label/nixos";
88       autoResize = true;
89       fsType = "ext4";
90     };
92     fileSystems."/boot" = {
93       device = "/dev/disk/by-label/ESP";
94       fsType = "vfat";
95     };
97     boot.growPartition = true;
99     boot.loader.grub = {
100       device = "nodev";
101       efiSupport = true;
102       efiInstallAsRemovable = true;
103     };
105     virtualisation.vmware.guest.enable = true;
106   };