summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-21 20:30:43 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-21 20:30:43 +0100
commitbd2bca99b5e27f3dc7b657f139947e51458ee8cb (patch)
treefc819a5a679598d8418260be70852b00c9fe438a
parentfix(system/services/mastodon): Update char patch to v4.3 (diff)
downloadnixos-server-disko/update.tar.gz
nixos-server-disko/update.zip
fix(modules/disko): Remove deprecated legacy type and migrate to `by-name` disko/update
-rw-r--r--hosts/server1/configuration.nix3
-rw-r--r--hosts/server1/hardware.nix8
-rw-r--r--modules/by-name/di/disko/module.nix78
-rw-r--r--system/default.nix1
-rw-r--r--system/disks/default.nix83
5 files changed, 84 insertions, 89 deletions
diff --git a/hosts/server1/configuration.nix b/hosts/server1/configuration.nix
index 0bbb993..2d35bd8 100644
--- a/hosts/server1/configuration.nix
+++ b/hosts/server1/configuration.nix
@@ -21,8 +21,5 @@
   networking.hostName = "server1";
   networking.domain = "vhack.eu";
 
-  # FIXME: Find a better way to specify the disk
-  system.disks.disk = "/dev/vda";
-
   system.stateVersion = "22.11";
 }
diff --git a/hosts/server1/hardware.nix b/hosts/server1/hardware.nix
index 6086362..9abc64c 100644
--- a/hosts/server1/hardware.nix
+++ b/hosts/server1/hardware.nix
@@ -3,8 +3,12 @@
     (modulesPath + "/profiles/qemu-guest.nix")
     (modulesPath + "/profiles/headless.nix")
   ];
-  # FIXME: The name of the grub device depends on the disko settings
-  boot.loader.grub.device = "/dev/vda";
+
+  vhack.disko = {
+    enable = true;
+    # FIXME: Find a better way to specify the disk
+    disk = "/dev/vda";
+  };
   boot.initrd.availableKernelModules = ["ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk"];
   boot.initrd.kernelModules = [];
 }
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;
+      };
+    };
+  };
+}
diff --git a/system/default.nix b/system/default.nix
index 14f0748..4c80ed9 100644
--- a/system/default.nix
+++ b/system/default.nix
@@ -1,6 +1,5 @@
 {...}: {
   imports = [
-    ./disks
     ./impermanence
     ./packages
     ./secrets
diff --git a/system/disks/default.nix b/system/disks/default.nix
deleted file mode 100644
index 3ae682c..0000000
--- a/system/disks/default.nix
+++ /dev/null
@@ -1,83 +0,0 @@
-{
-  config,
-  lib,
-  ...
-}:
-with lib; let
-  cfg = config.system.disks;
-  defaultMountOptions = ["compress-force=zstd:15"];
-in {
-  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;
-        type = "disk";
-        content = {
-          type = "table";
-          format = "gpt";
-          partitions = [
-            {
-              name = "boot";
-              start = "0";
-              end = "1M";
-              part-type = "primary";
-              flags = ["bios_grub"];
-            }
-            {
-              name = "root";
-              # leave space for the grub aka BIOS boot
-              start = "1M";
-              end = "100%";
-              part-type = "primary";
-              bootable = true;
-              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=6G" "mode=755"];
-        };
-      };
-    };
-    fileSystems = {
-      "/srv" = {
-        neededForBoot = true;
-      };
-      "/boot" = {
-        neededForBoot = true;
-      };
-    };
-  };
-}