From aaa097d38fd483bf1859f868e8403553b3c71477 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Billet?= Date: Thu, 27 Nov 2025 09:59:41 +0100 Subject: [PATCH] Fixed snapRAID configuration. Added missing double quotes on the Disko disks definitions. --- config-files/disks/boot-1.nix | 2 +- config-files/disks/boot-2.nix | 4 ++-- config-files/disks/data.nix | 2 +- config-files/disks/parity.nix | 2 +- configuration.nix | 26 ++++++++++++++------------ 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/config-files/disks/boot-1.nix b/config-files/disks/boot-1.nix index b26ede5..1ba948d 100644 --- a/config-files/disks/boot-1.nix +++ b/config-files/disks/boot-1.nix @@ -21,7 +21,7 @@ }; disk = { # Boot disk - system-1 = { + "system-1" = { type = "disk"; device = "${BOOT_DISK_1}"; content = { diff --git a/config-files/disks/boot-2.nix b/config-files/disks/boot-2.nix index 9d5a4a0..a50516b 100644 --- a/config-files/disks/boot-2.nix +++ b/config-files/disks/boot-2.nix @@ -2,7 +2,7 @@ { disko.devices = { disk = { - system-1 = { + "system-1" = { type = "disk"; device = "${BOOT_DISK_1}"; content = { @@ -31,7 +31,7 @@ }; }; }; - system-2 = { + "system-2" = { type = "disk"; device = "${BOOT_DISK_2}"; content = { diff --git a/config-files/disks/data.nix b/config-files/disks/data.nix index 678cef1..712a42c 100644 --- a/config-files/disks/data.nix +++ b/config-files/disks/data.nix @@ -1,4 +1,4 @@ - data-${DISK_NUMBER} = { + "data-${DISK_NUMBER}" = { type = "disk"; device = "${DISK_PATH}"; content = { diff --git a/config-files/disks/parity.nix b/config-files/disks/parity.nix index 1588078..1cc59e8 100644 --- a/config-files/disks/parity.nix +++ b/config-files/disks/parity.nix @@ -1,4 +1,4 @@ - parity-${DISK_NUMBER} = { + "parity-${DISK_NUMBER}" = { type = "disk"; device = "${DISK_PATH}"; content = { diff --git a/configuration.nix b/configuration.nix index f4dc795..5c6a097 100644 --- a/configuration.nix +++ b/configuration.nix @@ -2,14 +2,20 @@ let # Create a list of data disk mount points, e.g. [ "/mnt/data-1" "/mnt/data-2" ] - dataDisks = lib.lists.catAttrs "mountpoint" ( + dataDiskMounts = lib.attrsets.catAttrs "mountpoint" ( lib.attrsets.filterAttrs (n: v: lib.strings.hasPrefix "data-" n) config.disko.devices.disk ); # Create a list of parity disk mount points - parityDisks = lib.lists.catAttrs "mountpoint" ( + parityDiskMounts = lib.attrsets.catAttrs "mountpoint" ( lib.attrsets.filterAttrs (n: v: lib.strings.hasPrefix "parity-" n) config.disko.devices.disk ); + + # Create an attribute set for snapraid data disks, e.g. { d1 = "/mnt/data-1"; d2 = "/mnt/data-2"; } + snapraidDataDisks = lib.lists.foldl' + (acc: path: acc // { "d${toString (acc.i + 1)}" = path; i = acc.i + 1; }) + { i = 0; } + dataDiskMounts; in { @@ -187,22 +193,18 @@ in "cache.files=off" "moveonenospc=true" "category.create=mfs" - "srcmounts=${lib.strings.concatStringsSep ":" dataDisks}" + "srcmounts=${lib.strings.concatStringsSep ":" dataDiskMounts}" ]; }; # SnapRAID for data redundancy services.snapraid = { enable = true; - content = map (disk: "${disk}/snapraid.content") dataDisks; - parity = map (disk: "${disk}/snapraid.parity") parityDisks; - data = dataDisks; - - runner = { - enable = true; - diffAndSyncOn = "04:00"; # Daily at 4am - scrubOn = "Sun 05:00"; # Weekly on Sunday at 5am - }; + contentFiles = map (disk: "${disk}/snapraid.content") dataDiskMounts; + parityFiles = map (disk: "${disk}/snapraid.parity") parityDiskMounts; + dataDisks = builtins.removeAttrs snapraidDataDisks [ "i" ]; + # Sync every day at 01:00 am + # Scrub every monday at 02:00 am }; system.stateVersion = "25.05";