diff --git a/nixos/imports/snapraid.conf b/nixos/imports/snapraid.conf index dc7d403..eca65b5 100644 --- a/nixos/imports/snapraid.conf +++ b/nixos/imports/snapraid.conf @@ -1,31 +1,9 @@ ## /etc/snapraid.conf ## -# Example configuration for snapraid - # Defines the file to use as parity storage -# It must NOT be in a data disk -# Format: "parity FILE [,FILE] ..." parity /mnt/parity/snapraid.parity -# Defines the files to use as additional parity storage. -# If specified, they enable the multiple failures protection -# from two to six level of parity. -# To enable, uncomment one parity file for each level of extra -# protection required. Start from 2-parity, and follow in order. -# It must NOT be in a data disk -# Format: "X-parity FILE [,FILE] ..." -#2-parity /mnt/parity2/snapraid.2-parity -#3-parity /mnt/diskr/snapraid.3-parity -#4-parity /mnt/disks/snapraid.4-parity -#5-parity /mnt/diskt/snapraid.5-parity -#6-parity /mnt/disku/snapraid.6-parity - # Defines the files to use as content list -# You can use multiple specification to store more copies -# You must have least one copy for each parity file plus one. Some more don't hurt -# They can be in the disks used for data, parity or boot, -# but each file must be in a different disk -# Format: "content FILE" content /var/snapraid.content content /mnt/drive1/snapraid.content content /mnt/drive2/snapraid.content @@ -33,64 +11,11 @@ content /mnt/drive3/snapraid.content content /mnt/parity/snapraid.content # Defines the data disks to use -# The name and mount point association is relevant for parity, do not change it -# WARNING: Adding here your /home, /var or /tmp disks is NOT a good idea! -# SnapRAID is better suited for files that rarely changes! -# Format: "data DISK_NAME DISK_MOUNT_POINT" data d1 /mnt/drive1/ data d2 /mnt/drive2/ data d3 /mnt/drive3/ -# Excludes hidden files and directories (uncomment to enable). -#nohidden - # Defines files and directories to exclude -# Remember that all the paths are relative at the mount points -# Format: "exclude FILE" -# Format: "exclude DIR/" -# Format: "exclude /PATH/FILE" -# Format: "exclude /PATH/DIR/" exclude *.unrecoverable exclude /tmp/ -exclude /lost+found/ - -# Defines the block size in kibi bytes (1024 bytes) (uncomment to enable). -# WARNING: Changing this value is for experts only! -# Default value is 256 -> 256 kibi bytes -> 262144 bytes -# Format: "blocksize SIZE_IN_KiB" -#blocksize 256 - -# Defines the hash size in bytes (uncomment to enable). -# WARNING: Changing this value is for experts only! -# Default value is 16 -> 128 bits -# Format: "hashsize SIZE_IN_BYTES" -#hashsize 16 - -# Automatically save the state when syncing after the specified amount -# of GB processed (uncomment to enable). -# This option is useful to avoid to restart from scratch long 'sync' -# commands interrupted by a machine crash. -# It also improves the recovering if a disk break during a 'sync'. -# Default value is 0, meaning disabled. -# Format: "autosave SIZE_IN_GB" -#autosave 500 - -# Defines the pooling directory where the virtual view of the disk -# array is created using the "pool" command (uncomment to enable). -# The files are not really copied here, but just linked using -# symbolic links. -# This directory must be outside the array. -# Format: "pool DIR" -#pool /pool - -# Defines a custom smartctl command to obtain the SMART attributes -# for each disk. This may be required for RAID controllers and for -# some USB disk that cannot be autodetected. -# In the specified options, the "%s" string is replaced by the device name. -# Refers at the smartmontools documentation about the possible options: -# RAID -> https://www.smartmontools.org/wiki/Supported_RAID-Controllers -# USB -> https://www.smartmontools.org/wiki/Supported_USB-Devices -#smartctl d1 -d sat %s -#smartctl d2 -d usbjmicron %s -#smartctl parity -d areca,1/1 /dev/sg0 -#smartctl 2-parity -d areca,2/1 /dev/sg0 \ No newline at end of file +exclude /lost+found/ \ No newline at end of file diff --git a/nixos/imports/snapraid.nix b/nixos/imports/snapraid.nix index b25c4e0..e8b3df1 100644 --- a/nixos/imports/snapraid.nix +++ b/nixos/imports/snapraid.nix @@ -1,12 +1,46 @@ { pkgs, ... }: { - environment.etc."snapraid-runner.conf".text = builtins.readFile ../pkgs/snapraid-runner/snapraid-runner.conf; + environment.etc."snapraid.conf".text = builtins.readFile ./snapraid.conf; + environment.etc."snapraid-runner.conf".text = '' + [snapraid] + executable = ${pkgs.snapraid}/bin/snapraid + config = /etc/snapraid.conf + deletethreshold = 40 + touch = false - # Enable the SnapRAID service - # services.snapraid = { - # enable = true; - # configFile = "/etc/snapraid.conf"; - # }; + [logging] + file = /var/log/snapraid-runner.log + maxsize = 5000 + + [email] + sendon = + short = true + subject = [SnapRAID] Status Report: + from = cloud@ryot.foo + to = [REDACTED] + maxsize = 500 + + [smtp] + host = ryot.foo + port = + ssl = true + tls = true + user = admin + password = [REDACTED] + + [scrub] + enabled = true + plan = 12 + older-than = 10 + ''; + + services.cron = { + enable = true; + systemCronJobs = [ + # Runs snapraid-runner every day at 3am + "0 3 * * * root snapraid-runner" + ]; + }; }