{ config, pkgs, lib, ... }: let makePublicShare = path: { name = builtins.baseNameOf path; value = { inherit path; browseable = "yes"; writeable = "no"; "guest ok" = "yes"; "guest only" = "yes"; "force user" = "nobody"; }; }; publicShares = [ "/data/fast/music" "/data/fast/videos" ]; in { # https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/services/network-filesystems/samba.nix services.samba = { enable = true; extraConfig = '' workgroup = WORKGROUP server string = tahoe netbios name = tahoe security = user guest account = nobody mangled names = no client min protocol = SMB2 map to guest = bad user ntlm auth = true ''; shares = with lib; (listToAttrs (map makePublicShare cfg.publicShares)); }; }