{ lib, config, ... }: let nfsVolumeOpts = { name, ... }: { options = { path = lib.mkOption { type = lib.types.str; }; }; }; in { options = { lab.nfsVolumes = lib.mkOption { type = with lib.types; attrsOf (submodule nfsVolumeOpts); default = { }; }; }; config = { kubernetes.resources = { persistentVolumes = builtins.mapAttrs (name: nfsVolume: { spec = { capacity.storage = "1Mi"; accessModes = [ "ReadWriteMany" ]; nfs = { server = "lewis.dmz"; path = "/mnt/data/nfs/${nfsVolume.path}"; }; }; }) config.lab.nfsVolumes; persistentVolumeClaims = builtins.mapAttrs (name: nfsVolume: { spec = { accessModes = [ "ReadWriteMany" ]; storageClassName = ""; resources.requests.storage = "1Mi"; volumeName = name; }; }) config.lab.nfsVolumes; }; }; }