71 lines
1.9 KiB
Nix
71 lines
1.9 KiB
Nix
{ pkgs, config, lib, ... }:
|
|
let
|
|
inherit (builtins) getEnv;
|
|
inherit (lib.modules) mkIf mkMerge;
|
|
in
|
|
{
|
|
options.modules.networking.samba = let
|
|
inherit (lib.options) mkEnableOption;
|
|
in {
|
|
sharing.enable = mkEnableOption "Samba: enable NixOs -> external file-transfer";
|
|
receicing.enable = mkEnableOption "Samba: enable external -> NixOs file-transfer";
|
|
};
|
|
|
|
config = mkMerge [
|
|
(mkIf config.modules.networking.samba.sharing.enable {
|
|
users = {
|
|
groups.samba-guest = {};
|
|
users.samba-guest = {
|
|
isSystemUser = true;
|
|
description = "Residence of our Samba guest users";
|
|
group = "samba-guest";
|
|
home = "/var/empty";
|
|
createHome = false;
|
|
shell = pkgs.shadow;
|
|
};
|
|
};
|
|
user.extraGroups = [ "samba-guest" ];
|
|
|
|
networking.firewall = {
|
|
allowPing = true;
|
|
allowedTCPPorts = [ 5327 ];
|
|
allowedUDPPorts = [ 3702 ];
|
|
};
|
|
|
|
services.samba-wsdd.enable = true;
|
|
|
|
services.samba = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
extraConfig = ''
|
|
server string = ${config.networking.hostName}
|
|
netbios name = ${config.networking.hostName}
|
|
workgroup = WORKGROUP
|
|
security = user
|
|
|
|
create mask 0664
|
|
force create mode 0664
|
|
directory mask 0775
|
|
force directory mode 0775
|
|
follow symlink = yes
|
|
|
|
hosts allow = 192.168.1.0/24 localhost
|
|
hosts deny = 0.0.0.0/0
|
|
guest account = nobody
|
|
map to guest = bad user
|
|
'';
|
|
shares = {
|
|
Public = {
|
|
path = (getEnv "HOME") + "/Public";
|
|
browseable = "yes";
|
|
"read only" = "yes";
|
|
"guest ok" = "yes";
|
|
"forse user" = "${config.user.name}";
|
|
"force group" = "samba-guest";
|
|
"write list" = "${config.user.name}";
|
|
};
|
|
};
|
|
};
|
|
})
|
|
];
|
|
}
|