{ config, lib, ... }: let cfg = config.homelab.fileSystems.media.video; remotePath = "/mnt/SMALL/MEDIA/VIDEO"; maxPermissions = permissions: if builtins.elem "write" permissions then "rw" else "ro"; permissionsOption = maxPermissions cfg.permissions; in { options.homelab.fileSystems.media.video = { enable = lib.mkEnableOption "MEDIA/VIDEO dataset"; hostPath = lib.mkOption { type = lib.types.path; default = "/srv/video"; description = "Mountpath on host"; }; permissions = lib.mkOption { type = lib.types.listOf (lib.types.enum [ "read" "write" ]); default = [ "read" ]; description = "Mount options permissions"; }; }; config = lib.mkIf cfg.enable { fileSystems."${cfg.hostPath}" = { device = "192.168.0.11:${remotePath}"; fsType = "nfs"; options = [ permissionsOption "auto" "nfsvers=4.2" "async" "soft" "rsize=1048576" "wsize=1048576" "timeo=600" "retry=50" "retrans=2" "actimeo=1800" "lookupcache=all" "_netdev" "nosuid" "tcp" ]; }; }; }