summaryrefslogtreecommitdiff
path: root/hardware
diff options
context:
space:
mode:
Diffstat (limited to 'hardware')
-rw-r--r--hardware/zfs-impermanence-disk-config.nix80
1 files changed, 80 insertions, 0 deletions
diff --git a/hardware/zfs-impermanence-disk-config.nix b/hardware/zfs-impermanence-disk-config.nix
new file mode 100644
index 0000000..9087825
--- /dev/null
+++ b/hardware/zfs-impermanence-disk-config.nix
@@ -0,0 +1,80 @@
+# 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";
+ };
+ };
+ };
+ };
+ };
+}