# USAGE in your configuration.nix. # Update devices to match your hardware. # { # imports = [ ./disko-config.nix ]; # disko.devices.disk.main.device = "/dev/sda"; # } { disko.devices = { disk = { main = { type = "disk"; content = { type = "gpt"; partitions = { ESP = { size = "1G"; type = "EF00"; content = { type = "filesystem"; format = "vfat"; mountpoint = "/boot"; mountOptions = [ "umask=0077" ]; }; }; zfs = { size = "100%"; content = { type = "zfs"; pool = "zroot"; }; }; }; }; }; }; zpool = { zroot = { type = "zpool"; rootFsOptions = { # https://wiki.archlinux.org/title/Install_Arch_Linux_on_ZFS acltype = "posixacl"; atime = "off"; compression = "zstd"; mountpoint = "none"; xattr = "sa"; }; options.ashift = "12"; datasets = { "local" = { type = "zfs_fs"; options.mountpoint = "none"; }; "local/home" = { type = "zfs_fs"; mountpoint = "/home"; # Used by services.zfs.autoSnapshot options. options."com.sun:auto-snapshot" = "true"; }; "local/nix" = { type = "zfs_fs"; mountpoint = "/nix"; options."com.sun:auto-snapshot" = "false"; }; "local/persist" = { type = "zfs_fs"; mountpoint = "/persist"; options."com.sun:auto-snapshot" = "false"; }; "local/root" = { type = "zfs_fs"; mountpoint = "/"; options."com.sun:auto-snapshot" = "false"; postCreateHook = "zfs list -t snapshot -H -o name | grep -E '^zroot/local/root@blank$' || zfs snapshot zroot/local/root@blank"; }; }; }; }; }; }