{ disko.devices = { disk = { main = { type = "disk"; device = "/dev/nvme0n1"; content = { type = "gpt"; partitions.ESP = { priority = 1; name = "ESP"; start = "1M"; end = "512M"; type = "EF00"; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot"; mountOptions = [ "umask=0077" ]; }; }; partitions.root = { size = "100%"; content = { type = "btrfs"; extraArgs = [ "-f" ]; subvolumes = { "/root" = { mountpoint = "/"; mountOptions = [ "subvol=root" "compress=zstd" "noatime" ]; }; "/home" = { mountpoint = "/home"; mountOptions = [ "subvol=home" "compress=zstd" "noatime" ]; }; "/nix" = { mountpoint = "/nix"; mountOptions = [ "subvol=nix" "compress=zstd" "noatime" ]; }; "/nix/persist" = { mountpoint = "/nix/persist"; mountOptions = [ "subvol=persist" "compress=zstd" "noatime" ]; }; }; }; }; }; }; draupner0 = { type = "disk"; device = "/dev/disk/by-id/ata-ST8000VN004-3CP101_WWZ9VLCZ"; content = { type = "zfs"; pool = "draupner"; }; }; }; zpool.draupner = { type = "zpool"; rootFsOptions = { # I _think_ that this makes some zfs thingie not mount the pool, but systemd still mounts # it. Before this, mounting failed with "mountpoint or dataset busy", possibly because both # zfs and systemd tried to mount it. canmount = "off"; compression = "lz4"; atime = "off"; acltype = "posixacl"; }; options.ashift = "12"; datasets.draupner = { type = "zfs_fs"; mountpoint = "/media/draupner"; }; }; }; fileSystems."/nix/persist".neededForBoot = true; }