summary refs log tree commit diff
path: root/nixos/modules/virtualisation/amazon-image.nix
diff options
context:
space:
mode:
authorGraham Christensen <graham@grahamc.com>2021-08-25 09:38:46 -0400
committerGraham Christensen <graham@grahamc.com>2021-08-25 10:42:35 -0400
commitbd38b059eae05871579b2dfd51cd41d058b6a1ec (patch)
treeec8236c3aa59535ed61e0856960b48c177d0a0ca /nixos/modules/virtualisation/amazon-image.nix
parent076f6e2d948259e18ddac8e562c62b5b53de9fe6 (diff)
downloadnixpkgs-bd38b059eae05871579b2dfd51cd41d058b6a1ec.tar
nixpkgs-bd38b059eae05871579b2dfd51cd41d058b6a1ec.tar.gz
nixpkgs-bd38b059eae05871579b2dfd51cd41d058b6a1ec.tar.bz2
nixpkgs-bd38b059eae05871579b2dfd51cd41d058b6a1ec.tar.lz
nixpkgs-bd38b059eae05871579b2dfd51cd41d058b6a1ec.tar.xz
nixpkgs-bd38b059eae05871579b2dfd51cd41d058b6a1ec.tar.zst
nixpkgs-bd38b059eae05871579b2dfd51cd41d058b6a1ec.zip
NixOS/amazonImageZfs: init
Introduce an AWS EC2 AMI which supports aarch64 and x86_64 with a ZFS
root.

This uses `make-zfs-image` which implies two EBS volumes are needed
inside EC2, one for boot, one for root. It should not matter which
is identified `xvda` and which is `xvdb`, though I have always
uploaded `boot` as `xvda`.
Diffstat (limited to 'nixos/modules/virtualisation/amazon-image.nix')
-rw-r--r--nixos/modules/virtualisation/amazon-image.nix10
1 files changed, 8 insertions, 2 deletions
diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix
index bf5c04543a7..fe248a94488 100644
--- a/nixos/modules/virtualisation/amazon-image.nix
+++ b/nixos/modules/virtualisation/amazon-image.nix
@@ -41,17 +41,23 @@ in
 
     boot.growPartition = cfg.hvm;
 
-    fileSystems."/" = {
+    fileSystems."/" = mkIf (!cfg.zfs.enable) {
       device = "/dev/disk/by-label/nixos";
       fsType = "ext4";
       autoResize = true;
     };
 
-    fileSystems."/boot" = mkIf cfg.efi {
+    fileSystems."/boot" = mkIf (cfg.efi || cfg.zfs.enable) {
+      # The ZFS image uses a partition labeled ESP whether or not we're
+      # booting with EFI.
       device = "/dev/disk/by-label/ESP";
       fsType = "vfat";
     };
 
+    services.zfs.expandOnBoot = mkIf cfg.zfs.enable "all";
+
+    boot.zfs.devNodes = mkIf cfg.zfs.enable "/dev/";
+
     boot.extraModulePackages = [
       config.boot.kernelPackages.ena
     ];