78 lines
1.5 KiB
Nix
78 lines
1.5 KiB
Nix
# Module: base/network
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
pkgsUnstable,
|
|
inputs,
|
|
options,
|
|
...
|
|
}:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.network;
|
|
in
|
|
{
|
|
options.network = {
|
|
enableMDNS = mkOption {
|
|
type = types.str;
|
|
default = "false";
|
|
description = "Enable Multicast DNS (mDNS), or sets resolve-only mode";
|
|
example = "resolve";
|
|
};
|
|
|
|
enableTSExitNode = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = "Set up this host as a Tailscale exit node";
|
|
example = true;
|
|
};
|
|
};
|
|
|
|
config = {
|
|
environment.systemPackages = [
|
|
pkgs.chrony
|
|
];
|
|
|
|
services.tailscale = {
|
|
enable = true;
|
|
package = pkgsUnstable.tailscale;
|
|
useRoutingFeatures = if enableTSExitNode then "server" else "none";
|
|
extraSetFlags =
|
|
if enableTSExitNode then
|
|
[
|
|
"--advertise-exit-node"
|
|
]
|
|
else
|
|
[ ];
|
|
};
|
|
|
|
# Firewall Configuration
|
|
networking.nftables.enable = true;
|
|
networking.firewall = {
|
|
enable = true;
|
|
allowedTCPPorts = [ 22 ];
|
|
allowedUDPPorts = [ config.services.tailscale.port ];
|
|
|
|
# allow traffic from tailscale network
|
|
trustedInterfaces = [ "tailscale0" ];
|
|
};
|
|
|
|
services.resolved = {
|
|
enable = true;
|
|
extraConfig = ''
|
|
MulticastDNS=${cfg.enableMDNS}
|
|
'';
|
|
dnsovertls = "false";
|
|
};
|
|
|
|
services.chrony = {
|
|
enable = true;
|
|
enableNTS = true;
|
|
serverOption = "iburst";
|
|
};
|
|
};
|
|
}
|