summaryrefslogtreecommitdiffstats
path: root/example/complex.nix
diff options
context:
space:
mode:
Diffstat (limited to 'example/complex.nix')
-rw-r--r--example/complex.nix199
1 files changed, 199 insertions, 0 deletions
diff --git a/example/complex.nix b/example/complex.nix
new file mode 100644
index 0000000..939f71e
--- /dev/null
+++ b/example/complex.nix
@@ -0,0 +1,199 @@
+{ disks ? [ "/dev/vdb" "/dev/vdc" "/dev/vdd" ], ... }: {
+ disk = {
+ disk0 = {
+ type = "disk";
+ device = builtins.elemAt disks 0;
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ {
+ type = "partition";
+ name = "ESP";
+ start = "1MiB";
+ end = "128MiB";
+ fs-type = "fat32";
+ bootable = true;
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ };
+ }
+ ];
+ };
+ };
+ disk1 = {
+ type = "disk";
+ device = builtins.elemAt disks 1;
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ {
+ type = "partition";
+ start = "1M";
+ end = "100%";
+ name = "luks";
+ content = {
+ type = "luks";
+ name = "crypted1";
+ keyFile = "/tmp/secret.key";
+ extraArgs = [
+ "--iter-time 1"
+ ];
+ content = {
+ type = "lvm_pv";
+ vg = "pool";
+ };
+ };
+ }
+ ];
+ };
+ };
+ disk2 = {
+ type = "disk";
+ device = builtins.elemAt disks 2;
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ {
+ type = "partition";
+ start = "1M";
+ end = "100%";
+ name = "luks";
+ content = {
+ type = "luks";
+ name = "crypted2";
+ keyFile = "/tmp/secret.key";
+ extraArgs = [
+ "--iter-time 1"
+ ];
+ content = {
+ type = "lvm_pv";
+ vg = "pool";
+ };
+ };
+ }
+ ];
+ };
+ };
+ };
+ mdadm = {
+ raid1 = {
+ type = "mdadm";
+ level = 1;
+ content = {
+ type = "table";
+ format = "gpt";
+ partitions = [
+ {
+ type = "partition";
+ name = "bla";
+ start = "1MiB";
+ end = "100%";
+ content = {
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/ext4_mdadm_lvm";
+ };
+ }
+ ];
+ };
+ };
+ };
+ lvm_vg = {
+ pool = {
+ type = "lvm_vg";
+ lvs = {
+ root = {
+ type = "lvm_lv";
+ size = "10M";
+ lvm_type = "mirror";
+ content = {
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/ext4_on_lvm";
+ mountOptions = [
+ "defaults"
+ ];
+ };
+ };
+ raid1 = {
+ type = "lvm_lv";
+ size = "30M";
+ lvm_type = "raid0";
+ content = {
+ type = "mdraid";
+ name = "raid1";
+ };
+ };
+ raid2 = {
+ type = "lvm_lv";
+ size = "30M";
+ lvm_type = "raid0";
+ content = {
+ type = "mdraid";
+ name = "raid1";
+ };
+ };
+ zfs1 = {
+ type = "lvm_lv";
+ size = "128M";
+ lvm_type = "raid0";
+ content = {
+ type = "zfs";
+ pool = "zroot";
+ };
+ };
+ zfs2 = {
+ type = "lvm_lv";
+ size = "128M";
+ lvm_type = "raid0";
+ content = {
+ type = "zfs";
+ pool = "zroot";
+ };
+ };
+ };
+ };
+ };
+ zpool = {
+ zroot = {
+ type = "zpool";
+ mode = "mirror";
+ rootFsOptions = {
+ compression = "lz4";
+ "com.sun:auto-snapshot" = "false";
+ };
+ mountpoint = "/";
+
+ datasets = {
+ zfs_fs = {
+ zfs_type = "filesystem";
+ mountpoint = "/zfs_fs";
+ options."com.sun:auto-snapshot" = "true";
+ };
+ zfs_unmounted_fs = {
+ zfs_type = "filesystem";
+ options.mountpoint = "none";
+ };
+ zfs_legacy_fs = {
+ zfs_type = "filesystem";
+ options.mountpoint = "legacy";
+ mountpoint = "/zfs_legacy_fs";
+ };
+ zfs_testvolume = {
+ zfs_type = "volume";
+ size = "10M";
+ content = {
+ type = "filesystem";
+ format = "ext4";
+ mountpoint = "/ext4onzfs";
+ };
+ };
+ };
+ };
+ };
+}