{ config, pkgs, lib, ... }:

# TODO: use tailscale if enabled

# don't mount if local VM
lib.mkIf (!config.virtualisation.isVmVariant)

{
  # TODO: wireguard
  #boot.kernelParams = [ "nfs.nfs4_disable_idmapping=0" "nfsd.nfs4_disable_idmapping=0" ];

  fileSystems = let
    mkMount = mountpoint: server: subdir: {
      "${mountpoint}${subdir}" = {
        device = "${server}${subdir}";
        fsType = "nfs";
        #options = [ "nfsvers=4.2" ];
      };
    };
    # TODO: combine nameValuePair and listToAttrs
    joinSets = sets: builtins.foldl' (l: r: l // r) {} sets;
  # TODO: space in dirname is not supported
  in joinSets (map (mkMount "/mnt/freon" "192.168.1.3:/Freon") [
      ""
      "/Backups"
      "/ISO"
      "/Games"
      "/Images"
      "/Music"
      "/Music/Albums"
      "/Music/Kancolle"
      "/Music/OST"
      "/Music/Old"
      "/Music/Touhou"
      "/Music/Vocaloid"
      "/Music/dojin.co"
    ]);

}
