1
0

mergerfs.nix 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. { config
  2. , pkgs
  3. , ...
  4. }:
  5. {
  6. environment.systemPackages = with pkgs; [
  7. mergerfs
  8. mergerfs-tools
  9. ];
  10. users.groups.storage.gid = 992;
  11. fileSystems."/mnt/storage" = {
  12. device = "/mnt/data*";
  13. options = [
  14. "category.create=mfs"
  15. "defaults"
  16. "allow_other"
  17. "use_ino"
  18. "moveonenospc=true"
  19. "minfreespace=25G"
  20. "func.getattr=newest"
  21. "fsname=storage"
  22. "gid=${toString config.users.groups.storage.gid}"
  23. ];
  24. fsType = "fuse.mergerfs";
  25. };
  26. systemd.services."chown-storage" = {
  27. description = "Ensure correct group ownership on the storage pool";
  28. wantedBy = [ "local-fs.target" ];
  29. after = [ "local-fs.target" ];
  30. script = ''
  31. ${pkgs.coreutils}/bin/chown -R :storage /mnt/data*
  32. ${pkgs.coreutils}/bin/chmod -R 0775 /mnt/data*
  33. ${pkgs.coreutils}/bin/chown -R :storage /mnt/parity*
  34. ${pkgs.coreutils}/bin/chmod -R 0775 /mnt/parity*
  35. '';
  36. serviceConfig = {
  37. Type = "oneshot";
  38. RemainAfterExit = "yes";
  39. };
  40. };
  41. }