summary refs log tree commit diff stats
path: root/modules/by-name/di/disko
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/by-name/di/disko/module.nix78
1 files changed, 78 insertions, 0 deletions
diff --git a/modules/by-name/di/disko/module.nix b/modules/by-name/di/disko/module.nix
new file mode 100644
index 0000000..0aff93f
--- /dev/null
+++ b/modules/by-name/di/disko/module.nix
@@ -0,0 +1,78 @@
+{
+  config,
+  lib,
+  ...
+}: let
+  cfg = config.system.disko;
+
+  defaultMountOptions = ["compress-force=zstd:15" "noatime"];
+in {
+  options.vhack.disko = {
+    enable = lib.mkEnableOption "disk configuration via disko";
+
+    disk = lib.mkOption {
+      type = lib.types.path;
+      example = "/dev/disk/by-id/ata-WDC_WD10SDRW-11A0XS0_WD-WXP2A901KJN5";
+      description = "Path to the main disk";
+    };
+  };
+
+  config = {
+    disko.devices = {
+      disk.main = {
+        type = "disk";
+        device = cfg.disk;
+
+        content = {
+          type = "gpt";
+          partitions = {
+            boot = {
+              size = "1M";
+              type = "EF02"; # for grub MBR
+            };
+            root = {
+              size = "100%";
+              content = {
+                type = "btrfs";
+                extraArgs = ["-f" "--label nixos"]; # f: Override existing partitions
+
+                subvolumes = {
+                  "/nix" = {
+                    mountpoint = "/nix";
+                    mountOptions = defaultMountOptions;
+                  };
+                  "/srv" = {
+                    mountpoint = "/srv";
+                    mountOptions = defaultMountOptions;
+                  };
+                  "/srv/.snapshots" = {
+                    mountpoint = "/srv/.snapshots";
+                    mountOptions = defaultMountOptions;
+                  };
+                  "/boot" = {
+                    mountpoint = "/boot";
+                    mountOptions = defaultMountOptions;
+                  };
+                };
+              };
+            };
+          };
+        };
+      };
+
+      nodev."/" = {
+        fsType = "tmpfs";
+        mountOptions = ["defaults" "size=6G" "mode=755"];
+      };
+    };
+
+    fileSystems = {
+      "/srv" = {
+        neededForBoot = true;
+      };
+      "/boot" = {
+        neededForBoot = true;
+      };
+    };
+  };
+}