diff --git a/modules/features/ethdhcp.nix b/modules/features/ethdhcp.nix new file mode 100644 index 0000000..3739225 --- /dev/null +++ b/modules/features/ethdhcp.nix @@ -0,0 +1,32 @@ +{ ... }: { + + flake.nixosModules.hotspot = { config, lib, ... }: { + + networking.firewall.interfaces."eno1" = { + allowedUDPPorts = [ 53 67 68 ]; + allowedTCPPorts = [ 53 67 68 ]; + }; + + networking = { + interfaces."eno1" = { + ipv4.addresses = [{ address = "192.168.121.1"; prefixLength = 24; }]; + }; + + nat = { + enable = true; + internalInterfaces = [ "eno1" ]; + externalInterface = "wlo1"; + }; + }; + + services.dnsmasq = { + enable = true; + settings = { + interface = "eno1"; + dhcp-range = [ "192.168.121.2,192.168.121.10,1h" ]; + }; + }; + + networking.networkmanager.unmanaged = [ "eno1" ]; + }; +} diff --git a/modules/features/hotspot.nix b/modules/features/hotspot.nix index c386a12..cfd1931 100644 --- a/modules/features/hotspot.nix +++ b/modules/features/hotspot.nix @@ -7,8 +7,16 @@ allowedTCPPorts = [ 53 67 68 ]; }; - networking.interfaces."wlo1" = { - ipv4.addresses = [{ address = "192.168.121.1"; prefixLength = 24; }]; + networking = { + interfaces."wlo1" = { + ipv4.addresses = [{ address = "192.168.121.1"; prefixLength = 24; }]; + }; + + nat = { + enable = true; + internalInterfaces = [ "wlo1" ]; + externalInterface = "eno1"; + }; }; services.dnsmasq = {