summary refs log tree commit diff stats
path: root/system
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--system/disks/default.nix65
-rw-r--r--system/disks/impermanence.nix15
-rw-r--r--system/file_system_layouts/default.nix49
3 files changed, 80 insertions, 49 deletions
diff --git a/system/disks/default.nix b/system/disks/default.nix
new file mode 100644
index 0000000..b5e53e4
--- /dev/null
+++ b/system/disks/default.nix
@@ -0,0 +1,65 @@
+{
+  config,
+  lib,
+  ...
+}:
+with lib; let
+  cfg = config.system.disks;
+  defaultMountOptions = ["compress-force=zstd:15"];
+in {
+  imports = [ ./impermanence.nix];
+
+  options.system.disks = {
+    disk = mkOption {
+      type = lib.types.path;
+      example = literalExpression "/dev/disk/by-id/ata-WDC_WD10SDRW-11A0XS0_WD-WXP2A901KJN5";
+      description = lib.mdDoc "Path to the disk";
+    };
+  };
+
+  config = {
+    disko.devices = {
+      disk.main = {
+        device = cfg.disk;
+        content = {
+          type = "btrfs";
+          extraArgs = ["-f" "--label nixos"]; # f: Override existing partitions
+          subvolumes = {
+            "nix" = {
+              mountpoint = "/nix";
+              mountOptions = defaultMountOptions;
+            };
+            "persistent-storage" = {
+              mountpoint = "/srv";
+              mountOptions = defaultMountOptions;
+            };
+            "persistent-storage@snapshots" = {
+              mountpoint = "/srv/.snapshots";
+              mountOptions = defaultMountOptions;
+            };
+            "boot" = {
+              mountpoint = "/boot";
+              mountOptions = defaultMountOptions;
+            };
+          };
+        };
+      };
+      nodev = {
+        "/" = {
+          fsType = "tmpfs";
+          mountOptions = ["defaults" "size=2G" "mode=755"];
+        };
+      };
+    };
+    fileSystems = {
+      "/srv" = {
+        neededForBoot = true;
+      };
+      "/boot" = {
+        neededForBoot = true;
+      };
+    };
+  };
+}
+# vim: ts=2
+
diff --git a/system/disks/impermanence.nix b/system/disks/impermanence.nix
new file mode 100644
index 0000000..6da011a
--- /dev/null
+++ b/system/disks/impermanence.nix
@@ -0,0 +1,15 @@
+{...}: {
+  environment.persistence = {
+    "/srv" = {
+      hideMounts = true;
+      directories = [
+        "/etc/nixos"
+        "/var/log"
+        "/var/lib/postgresql"
+      ];
+      files = [
+        "/etc/machine-id"
+      ];
+    };
+  };
+}
diff --git a/system/file_system_layouts/default.nix b/system/file_system_layouts/default.nix
deleted file mode 100644
index fe7fc3f..0000000
--- a/system/file_system_layouts/default.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{
-  modulesPath,
-  config,
-  lib,
-  ...
-}:
-with lib; let
-  cfg = config.system.fileSystemLayouts;
-in {
-  options.system.fileSystemLayouts = {
-    mainDisk = mkOption {
-      type = lib.types.path;
-      example = literalExpression "/dev/disk/by-uuid/0442cb6d-f13a-4635-b487-fa76189774c5";
-      description = lib.mdDoc "Path to the main disk";
-    };
-  };
-  config = {
-    fileSystems = {
-      "/" = {
-        device = "tmpfs";
-        fsType = "tmpfs";
-        options = ["defaults" "size=2G" "mode=755"];
-      };
-      "/nix" = {
-        device = cfg.mainDisk;
-        fsType = "btrfs";
-        options = ["subvol=nix" "compress-force=zstd"];
-      };
-      "/srv" = {
-        device = cfg.mainDisk;
-        fsType = "btrfs";
-        options = ["subvol=storage" "compress-force=zstd"];
-      };
-      "/boot" = {
-        device = cfg.mainDisk;
-        options = ["subvol=boot" "compress-force=zstd"];
-      };
-
-      "/etc/nixos" = {
-        device = "/srv/nix-config";
-        options = ["bind"];
-      };
-      "/var/lib/postgresql" = {
-        device = "/srv/postgresql";
-        options = ["bind"];
-      };
-    };
-  };
-}