diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-07-20 22:35:52 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-07-21 00:19:10 -0600 |
| commit | b1f3d839adc88b024e3a79d09b54a1939b78edba (patch) | |
| tree | 2287680392dd32e6bda4c7e2664dc607727d79c7 /sys/net/interfaces.nix | |
| parent | c88f8c51c90c1e48c75047849a42ae0ed6c4aa15 (diff) | |
net/fail2ban: initial commit
Diffstat (limited to 'sys/net/interfaces.nix')
| -rw-r--r-- | sys/net/interfaces.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sys/net/interfaces.nix b/sys/net/interfaces.nix new file mode 100644 index 0000000..0341440 --- /dev/null +++ b/sys/net/interfaces.nix @@ -0,0 +1,49 @@ +{ lib, config, pkgs, ... }: +with lib; let + cfg = config.local.net; +in +{ + options.local.net = with lib.types; { + enable = mkEnableOption "networking stack"; + + hostname = mkOption { + type = str; + }; + + dhcpInterface = mkOption { + type = nullOr str; + default = null; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.dhcpcd ]; + + networking = { + domain = mkDefault config.local.domains.host.main; + hostName = cfg.hostname; + + useDHCP = false; + enableIPv6 = true; + useNetworkd = true; + useHostResolvConf = false; + + wireguard.enable = true; + }; + + systemd.network.networks = mkIf (cfg.dhcpInterface != null) { + "40-${cfg.dhcpInterface}" = { + matchConfig.Name = cfg.dhcpInterface; + + networkConfig = { + DHCP = "ipv4"; + IPv6AcceptRA = true; + IPv6PrivacyExtensions = "kernel"; + }; + + # make routing on this interface a dependency for network-online.target + linkConfig.RequiredForOnline = "routable"; + }; + }; + }; +} |
