60 lines
1.3 KiB
Nix
60 lines
1.3 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
{
|
|
### --> MergerFS setup
|
|
fileSystems."/mnt/data" = {
|
|
device = "/mnt/content-*";
|
|
fsType = "fuse.mergerfs";
|
|
options = [
|
|
"category.create=ff"
|
|
"cache.files=partial"
|
|
"dropcacheonclose=true"
|
|
"defaults"
|
|
"noauto"
|
|
"nofail"
|
|
"allow_other"
|
|
"moveonenospc=1"
|
|
"minfreespace=50G"
|
|
"func.getattr=newest"
|
|
"fsname=mergerfs_data"
|
|
"x-mount.mkdir"
|
|
"x-systemd.automount"
|
|
"x-systemd.requires=mount-dependencies.service"
|
|
];
|
|
};
|
|
### MergerFS setup <--
|
|
|
|
systemd.services.mount-dependencies = {
|
|
description = "This service will mount the encrypted disks for mergerFS";
|
|
after = [ "network.target" ];
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
# Bring the service up
|
|
ExecStart = pkgs.writeShellScript "mount-disks" ''
|
|
$MOUNT_DEPENDENCIES_START
|
|
'';
|
|
# Take it down gracefully
|
|
ExecStop = pkgs.writeShellScript "unmount-disks" ''
|
|
$MOUNT_DEPENDENCIES_STOP
|
|
'';
|
|
Restart = "on-failure";
|
|
};
|
|
};
|
|
|
|
### --> SnapRAID setup
|
|
services.snapraid = {
|
|
enable = true;
|
|
contentFiles = [
|
|
$SNAPRAID_CONTENT_FILES
|
|
];
|
|
parityFiles = [
|
|
$SNAPRAID_PARITY_FILES
|
|
];
|
|
dataDisks = {
|
|
$SNAPRAID_DATA_DISKS
|
|
};
|
|
};
|
|
### SnapRAID setup <--
|
|
} |