{ config, lib, ... }:
with lib;
let
  cfg = config.dadada.fileShare;
  sharePath = "/mnt/storage/share";
  ipv6 = "fd42:dead:beef::/48";
  ipv4 = "192.168.42.0/24";
in
{
  options.dadada.fileShare = {
    enable = mkEnableOption "Enable file share server";
  };
  config = mkIf cfg.enable {
    services.samba = {
      enable = true;
      securityType = "user";
      extraConfig = ''
        workgroup = WORKGROUP
        server string = media
        netbios name = media
        security = user
        guest account = nobody
        map to guest = bad user
      '';
      shares = {
        public = {
          path = sharePath;
          browseable = "yes";
          "read only" = "yes";
          "guest ok" = "yes";
          "guest only" = "yes";
          "create mask" = "0660";
          "directory mask" = "2770";
          "force user" = "nobody";
          "force group" = "nobody";
        };
      };
    };
    services.nfs = {
      server.enable = true;
      server.exports = ''
        ${sharePath} ${ipv6}(rw,all_squash,insecure,subtree_check) ${ipv4}(rw,all_squash,insecure,subtree_check) # map to user/group - in this case nobody
      '';
    };
  };
}