Fixed snapRAID configuration. Added missing double quotes on the Disko disks definitions.

This commit is contained in:
Raphaël Billet
2025-11-27 09:59:41 +01:00
parent b8576a6fb3
commit aaa097d38f
5 changed files with 19 additions and 17 deletions
+1 -1
View File
@@ -21,7 +21,7 @@
};
disk = {
# Boot disk
system-1 = {
"system-1" = {
type = "disk";
device = "${BOOT_DISK_1}";
content = {
+2 -2
View File
@@ -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 = {
+1 -1
View File
@@ -1,4 +1,4 @@
data-${DISK_NUMBER} = {
"data-${DISK_NUMBER}" = {
type = "disk";
device = "${DISK_PATH}";
content = {
+1 -1
View File
@@ -1,4 +1,4 @@
parity-${DISK_NUMBER} = {
"parity-${DISK_NUMBER}" = {
type = "disk";
device = "${DISK_PATH}";
content = {
+14 -12
View File
@@ -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";