|
@@ -1,10 +1,15 @@
|
|
|
-{ pkgs, ... }:
|
|
|
|
|
|
|
+{ config
|
|
|
|
|
+, pkgs
|
|
|
|
|
+, ...
|
|
|
|
|
+}:
|
|
|
{
|
|
{
|
|
|
environment.systemPackages = with pkgs; [
|
|
environment.systemPackages = with pkgs; [
|
|
|
mergerfs
|
|
mergerfs
|
|
|
mergerfs-tools
|
|
mergerfs-tools
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
|
|
+ users.groups.storage.gid = 992;
|
|
|
|
|
+
|
|
|
fileSystems."/mnt/storage" = {
|
|
fileSystems."/mnt/storage" = {
|
|
|
device = "/mnt/data*";
|
|
device = "/mnt/data*";
|
|
|
options = [
|
|
options = [
|
|
@@ -16,10 +21,27 @@
|
|
|
"minfreespace=25G"
|
|
"minfreespace=25G"
|
|
|
"func.getattr=newest"
|
|
"func.getattr=newest"
|
|
|
"fsname=storage"
|
|
"fsname=storage"
|
|
|
- "uid=1000"
|
|
|
|
|
- "gid=1000"
|
|
|
|
|
- "umask=002"
|
|
|
|
|
|
|
+ "gid=${toString config.users.groups.storage.gid}"
|
|
|
];
|
|
];
|
|
|
fsType = "fuse.mergerfs";
|
|
fsType = "fuse.mergerfs";
|
|
|
};
|
|
};
|
|
|
|
|
+
|
|
|
|
|
+ systemd.services."chown-storage" = {
|
|
|
|
|
+ description = "Ensure correct group ownership on the storage pool";
|
|
|
|
|
+
|
|
|
|
|
+ wantedBy = [ "local-fs.target" ];
|
|
|
|
|
+ after = [ "local-fs.target" ];
|
|
|
|
|
+
|
|
|
|
|
+ script = ''
|
|
|
|
|
+ ${pkgs.coreutils}/bin/chown -R :storage /mnt/data*
|
|
|
|
|
+ ${pkgs.coreutils}/bin/chmod -R 0775 /mnt/data*
|
|
|
|
|
+ ${pkgs.coreutils}/bin/chown -R :storage /mnt/parity*
|
|
|
|
|
+ ${pkgs.coreutils}/bin/chmod -R 0775 /mnt/parity*
|
|
|
|
|
+ '';
|
|
|
|
|
+
|
|
|
|
|
+ serviceConfig = {
|
|
|
|
|
+ Type = "oneshot";
|
|
|
|
|
+ RemainAfterExit = "yes";
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
}
|
|
}
|