summaryrefslogtreecommitdiff
path: root/sys/net/interfaces.nix
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-07-20 22:35:52 -0600
committerAlejandro Soto <alejandro@34project.org>2024-07-21 00:19:10 -0600
commitb1f3d839adc88b024e3a79d09b54a1939b78edba (patch)
tree2287680392dd32e6bda4c7e2664dc607727d79c7 /sys/net/interfaces.nix
parentc88f8c51c90c1e48c75047849a42ae0ed6c4aa15 (diff)
net/fail2ban: initial commit
Diffstat (limited to 'sys/net/interfaces.nix')
-rw-r--r--sys/net/interfaces.nix49
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";
+ };
+ };
+ };
+}