{
  config,
  lib,
  ...
}: let
  cfg = config.lily.fileshare;
in {
  options.lily.fileshare.enable = lib.mkEnableOption "activate local filesharing";

  config = lib.mkIf cfg.enable {
    services.samba = {
      enable = true;
      securityType = "user"; #Keep user, but use guest account.
      openFirewall = true;
      settings = {
        global = {
          workgroup = "WORKGROUP"; #Ensure this matches your network's workgroup.
          "server string" = "smbnix";
          "netbios name" = "smbnix";
          "security" = "user"; #Keep this as user, but guest will be used for access.
          "hosts allow" = "192.168.1. 127.0.0.1 localhost"; #Adjust to your LAN.
          "hosts deny" = "0.0.0.0/0";
          "guest account" = "nobody"; #Important for guest access.
          "map to guest" = "bad user"; #Maps unknown users to guest.
        };
        "public" = {
          "path" = "/ext/share";
          "browseable" = "yes";
          "read only" = "no";
          "guest ok" = "yes"; #Allows guest access.
          "create mask" = "0644";
          "directory mask" = "0755";
        };
      };
    };

    services.samba-wsdd = {
      enable = true;
      openFirewall = true;
    };
    services.avahi = {
      enable = true;
      nssmdns = true;
      nssmdns4 = true;
      openFirewall = true;
      reflector = true;
      publish = {
        domain = true;
        enable = true;
        userServices = true;
        addresses = true;
      };
    };
  };
}