vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / virtualisation / amazon-options.nix
blob0eabcccfeced6af57a7e1cbc2708267a0fb487a6
1 { config, lib, pkgs, ... }:
2 let
3   inherit (lib) literalExpression types;
4 in {
5   options = {
6     ec2 = {
7       zfs = {
8         enable = lib.mkOption {
9           default = false;
10           internal = true;
11           description = ''
12             Whether the EC2 instance uses a ZFS root.
13           '';
14         };
16         datasets = lib.mkOption {
17           description = ''
18             Datasets to create under the `tank` and `boot` zpools.
20             **NOTE:** This option is used only at image creation time, and
21             does not attempt to declaratively create or manage datasets
22             on an existing system.
23           '';
25           default = {};
27           type = types.attrsOf (types.submodule {
28             options = {
29               mount = lib.mkOption {
30                 description = "Where to mount this dataset.";
31                 type = types.nullOr types.str;
32                 default = null;
33               };
35               properties = lib.mkOption {
36                 description = "Properties to set on this dataset.";
37                 type = types.attrsOf types.str;
38                 default = {};
39               };
40             };
41           });
42         };
43       };
44       efi = lib.mkOption {
45         default = pkgs.stdenv.hostPlatform.isAarch64;
46         defaultText = literalExpression "pkgs.stdenv.hostPlatform.isAarch64";
47         internal = true;
48         description = ''
49           Whether the EC2 instance is using EFI.
50         '';
51       };
52       hvm = lib.mkOption {
53         description = "Unused legacy option. While support for non-hvm has been dropped, we keep this option around so that NixOps remains compatible with a somewhat recent `nixpkgs` and machines with an old `stateVersion`.";
54         internal = true;
55         default = true;
56         readOnly = true;
57       };
58     };
59   };
61   config = lib.mkIf config.ec2.zfs.enable {
62     networking.hostId = lib.mkDefault "00000000";
64     fileSystems = let
65       mountable = lib.filterAttrs (_: value: ((value.mount or null) != null)) config.ec2.zfs.datasets;
66     in lib.mapAttrs'
67       (dataset: opts: lib.nameValuePair opts.mount {
68         device = dataset;
69         fsType = "zfs";
70       })
71       mountable;
72   };