A NixOS-based router configuration for home networks.
- Multi-network support (isolated LAN segments)
- DHCP server (Kea)
- DNS server (Unbound with ad-blocking)
- Web dashboard for monitoring
- Dynamic DNS updates (Linode)
- Firewall and NAT
- Secrets management via sops-nix
- Installation Script
- NixOS-capable hardware
- Network interfaces for WAN and LAN
- Internet connection for initial setup
Documentation is available at:
- GitHub Pages: https://beardedtek.github.io/nixos-router/
- Local (on router): Access via WebUI at
http://router-ip:8080/documentation - Source: docs/
Boot from standard NixOS ISO and run:
curl -fsSL https://beard.click/nixos-router > install.sh
chmod +x install.sh
sudo ./install.sh-
Build the ISO:
cd iso ./build-iso.sh -
Write ISO to USB and boot
-
Follow on-screen installation menu
Edit router-config.nix to configure:
- Hostname and timezone
- WAN interface and type (DHCP or PPPoE)
- LAN networks (IP ranges, interfaces)
- DHCP ranges
- DNS settings
- Web dashboard settings
Access at http://router-ip:8080
Shows:
- System metrics (CPU, memory, load)
- Network interface statistics
- Device usage and bandwidth
- Service status
router-config.nix- Main configuration fileconfiguration.nix- NixOS system configurationdocs/- Project Documentation (IN PROGRESS)iso/- Files related to buiding the Installation ISOmodules/- Router modules (router, dns, dhcp, webui, etc.)scripts/- Installation and update scriptssecrets/- Example SOPS secrets.yamlwebui/- Web dashboard (FastAPI backend, React frontend)
sudo ./scripts/update-router.shMIT