From de1fae2baf9f8ed7406f75989754fe7f345377b5 Mon Sep 17 00:00:00 2001 From: Noah Masur <7386960+nmasur@users.noreply.github.com> Date: Mon, 27 Feb 2023 01:49:46 +0000 Subject: [PATCH] setup but don't use generic zfs config --- disks/zfs.nix | 95 +++++++++++++++++++++++ hosts/swan/default.nix | 6 +- hosts/swan/disks.nix | 172 ----------------------------------------- 3 files changed, 100 insertions(+), 173 deletions(-) create mode 100644 disks/zfs.nix delete mode 100644 hosts/swan/disks.nix diff --git a/disks/zfs.nix b/disks/zfs.nix new file mode 100644 index 0000000..7181f4d --- /dev/null +++ b/disks/zfs.nix @@ -0,0 +1,95 @@ +{ pool, disks, ... }: { + disk = lib.genAttrs disks (disk: { + "${disk}" = { + type = "disk"; + device = "/dev/${disk}"; + content = { + type = "table"; + format = "gpt"; + partitions = [{ + type = "partition"; + name = "zfs"; + start = "128MiB"; + end = "100%"; + content = { + type = "zfs"; + pool = pool; + }; + }]; + }; + }; + }); + zpool = { + "${pool}" = { + type = "zpool"; + mode = "raidz1"; + rootFsOptions = { + compression = "on"; # lz4 by default + "com.sun:auto-snapshot" = "false"; + ashift = "12"; + }; + # mountpoint = "/"; + + datasets = { + root = { + zfs_type = "filesystem"; + mountpoint = null; + options."com.sun:auto-snapshot" = "false"; + }; + # "media/movies" = { + # zfs_type = "filesystem"; + # mountpoint = "/media/movies"; + # options.recordsize = "1M"; + # }; + # "media/tv" = { + # zfs_type = "filesystem"; + # mountpoint = "/media/tv"; + # options.recordsize = "1M"; + # }; + # "media/books" = { + # zfs_type = "filesystem"; + # mountpoint = "/media/books"; + # }; + # archive = { + # zfs_type = "filesystem"; + # mountpoint = "/archive"; + # options.compression = "zstd"; + # 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"; + # }; + # }; + # encrypted = { + # zfs_type = "filesystem"; + # size = "20M"; + # options = { + # mountpoint = "none"; + # encryption = "aes-256-gcm"; + # keyformat = "passphrase"; + # keylocation = "file:///tmp/secret.key"; + # }; + # }; + # "encrypted/test" = { + # zfs_type = "filesystem"; + # size = "2M"; + # mountpoint = "/zfs_crypted"; + # }; + }; + }; + }; +} diff --git a/hosts/swan/default.nix b/hosts/swan/default.nix index b71923d..91e2e23 100644 --- a/hosts/swan/default.nix +++ b/hosts/swan/default.nix @@ -22,7 +22,11 @@ nixpkgs.lib.nixosSystem { disko = { enableConfig = true; - devices = import ../../disks/root.nix { disk = "/dev/nvme0n1"; }; + devices = (import ../../disks/root.nix { disk = "/dev/nvme0n1"; }); + # // (import ../../disks/zfs.nix { + # pool = "tank"; + # disks = [ "/dev/sda" "/dev/sdb" "/dev/sdc" ]; + # }); }; # head -c 8 /etc/machine-id diff --git a/hosts/swan/disks.nix b/hosts/swan/disks.nix deleted file mode 100644 index 4a99796..0000000 --- a/hosts/swan/disks.nix +++ /dev/null @@ -1,172 +0,0 @@ -{ ... }: { - disko.enableConfig = false; - disko.devices = { - disk = { - boot = { - type = "disk"; - device = "/dev/nvme0n1"; - content = { - type = "table"; - format = "gpt"; - partitions = [ - { - type = "partition"; - name = "ESP"; - start = "0"; - end = "512MiB"; - fs-type = "fat32"; - bootable = true; - content = { - type = "filesystem"; - format = "vfat"; - mountpoint = "/boot"; - extraArgs = [ "-n boot" ]; - }; - } - { - type = "partition"; - name = "root"; - start = "512MiB"; - end = "100%"; - part-type = "primary"; - bootable = true; - content = { - type = "filesystem"; - format = "ext4"; - mountpoint = "/"; - extraArgs = [ "-L nixos" ]; - }; - } - ]; - }; - }; - sda = { - type = "disk"; - device = "/dev/sda"; - content = { - type = "table"; - format = "gpt"; - partitions = [{ - type = "partition"; - name = "zfs"; - start = "128MiB"; - end = "100%"; - content = { - type = "zfs"; - pool = "tank"; - }; - }]; - }; - }; - sdb = { - type = "disk"; - device = "/dev/sdb"; - content = { - type = "table"; - format = "gpt"; - partitions = [{ - type = "partition"; - name = "zfs"; - start = "128MiB"; - end = "100%"; - content = { - type = "zfs"; - pool = "tank"; - }; - }]; - }; - }; - sdc = { - type = "disk"; - device = "/dev/sdc"; - content = { - type = "table"; - format = "gpt"; - partitions = [{ - type = "partition"; - name = "zfs"; - start = "128MiB"; - end = "100%"; - content = { - type = "zfs"; - pool = "tank"; - }; - }]; - }; - }; - }; - zpool = { - tank = { - type = "zpool"; - mode = "raidz1"; - rootFsOptions = { - compression = "on"; # lz4 by default - "com.sun:auto-snapshot" = "false"; - ashift = "12"; - }; - # mountpoint = "/"; - - datasets = { - media = { - zfs_type = "filesystem"; - mountpoint = "/media"; - options."com.sun:auto-snapshot" = "false"; - }; - # "media/movies" = { - # zfs_type = "filesystem"; - # mountpoint = "/media/movies"; - # options.recordsize = "1M"; - # }; - # "media/tv" = { - # zfs_type = "filesystem"; - # mountpoint = "/media/tv"; - # options.recordsize = "1M"; - # }; - # "media/books" = { - # zfs_type = "filesystem"; - # mountpoint = "/media/books"; - # }; - # archive = { - # zfs_type = "filesystem"; - # mountpoint = "/archive"; - # options.compression = "zstd"; - # 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"; - # }; - # }; - # encrypted = { - # zfs_type = "filesystem"; - # size = "20M"; - # options = { - # mountpoint = "none"; - # encryption = "aes-256-gcm"; - # keyformat = "passphrase"; - # keylocation = "file:///tmp/secret.key"; - # }; - # }; - # "encrypted/test" = { - # zfs_type = "filesystem"; - # size = "2M"; - # mountpoint = "/zfs_crypted"; - # }; - }; - }; - }; - }; -}