diff --git a/nixos/hosts/warsaw-ovh-01/disks.nix b/nixos/hosts/warsaw-ovh-01/disks.nix index 3f8d9f7f..59cdac89 100644 --- a/nixos/hosts/warsaw-ovh-01/disks.nix +++ b/nixos/hosts/warsaw-ovh-01/disks.nix @@ -1,110 +1,101 @@ { - imports = [ ../../common/services/snapper.nix ]; - - # extra configs not present in the standard config above - services.snapper.configs.Storage = { - TIMELINE_CREATE = true; - TIMELINE_CLEANUP = true; - SUBVOLUME = "/Storage"; - }; - - services.btrfs.autoScrub.enable = true; - services.btrfs.autoScrub.interval = "weekly"; - - disko.devices.disk.sda = { - type = "disk"; - device = "/dev/sda"; - content = { - type = "gpt"; - partitions = { - BOOT = { - priority = 1; - name = "BOOT"; - start = "0%"; - end = "550MiB"; - type = "EF00"; - content = { - type = "filesystem"; - format = "vfat"; - # https://github.com/nix-community/disko/issues/527 - mountOptions = [ "umask=0077" ]; - mountpoint = "/boot"; + # https://github.com/nix-community/disko/blob/master/example/boot-raid1.nix + disko.devices = { + disk = { + sda = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + BOOT = { + size = "1M"; + type = "EF02"; # GRUB MBR + }; + ESP = { + size = "500M"; + type = "EF00"; + content = { + type = "mdraid"; + name = "boot"; + }; + }; + mdadm = { + size = "100%"; + content = { + type = "mdraid"; + name = "raid1"; + }; + }; }; - }; # partition 1 (ESP) - LUKS-ROOT = { - start = "550MiB"; - end = "100%"; - content = { - type = "luks"; - name = "ROOT"; - extraOpenArgs = [ "--allow-discards" ]; - content = { - type = "btrfs"; - extraArgs = [ "-f" ]; - subvolumes = { - "/root" = { + }; + }; + + sdb = { + type = "disk"; + device = "/dev/sdb"; + content = { + type = "gpt"; + partitions = { + BOOT = { + size = "1M"; + type = "EF02"; # GRUB MBR + }; + ESP = { + size = "500M"; + type = "EF00"; + content = { + type = "mdraid"; + name = "boot"; + }; + }; + mdadm = { + size = "100%"; + content = { + type = "mdraid"; + name = "raid1"; + }; + }; + }; + }; + }; + }; + + mdadm = { + boot = { + type = "mdadm"; + level = 1; + metadata = "1.0"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + raid1 = { + type = "mdadm"; + level = 1; + content = { + type = "gpt"; + partitions = { + LUKS-ROOT = { + start = "550MiB"; + end = "100%"; + content = { + type = "luks"; + name = "ROOT"; + extraOpenArgs = [ "--allow-discards" ]; + content = { + type = "filesystem"; + format = "ext4"; mountpoint = "/"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # root - "/home" = { - mountpoint = "/home"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # home - "/nix" = { - mountpoint = "/nix"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # nix - # SNAPSHOT SUBVOLS - "/root/.snapshots" = { - mountpoint = "/.snapshots"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # root - "/home/.snapshots" = { - mountpoint = "/home/.snapshots"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # home - "/nix/.snapshots" = { - mountpoint = "/nix/.snapshots"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # nix - }; # subvolumes - }; # content.content - }; # content - }; # partition 2 (/ BTRFS) - }; # partitions - }; # content - }; # disko.devices.disk.sda - - disko.devices.disk.sdb = { - type = "disk"; - device = "/dev/sdb"; - content = { - type = "gpt"; - partitions = { - LUKS-STORAGE = { - start = "550MiB"; - end = "100%"; - content = { - type = "luks"; - name = "STORAGE"; - extraOpenArgs = [ "--allow-discards" ]; - content = { - type = "btrfs"; - extraArgs = [ "-f" ]; - subvolumes = { - "/Storage" = { - mountpoint = "/Storage"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # Storage - "/Storage/.snapshots" = { - mountpoint = "/Storage/.snapshots"; - mountOptions = [ "compress=zstd" "noatime" ]; - }; # Storage - }; # subvolumes - }; # content.content - }; # content - }; # partition 2 (/ BTRFS) - }; # partitions - }; # content - }; # disko.devices.disk.sdb -} # root + }; # content.content + }; # content + }; # partition 2 (/ BTRFS) + }; + }; + }; + }; + }; +}