= NixOS for Turris routers This repository contains nix flake to get NixOS running on Turris routers. Using NixOS on router has few shortcomings, and you should know about them right away so here is a list of issues you should expect: * NixOS is pretty memory hungry. There are few reasons for this such as Systemd and specially Journald as those simply required more memory than other alternatives. But but but... The biggest issue is NixOS itself. The wide range of configuration options in NixOS result in pretty significant memory being required on evaluation. The peak is around 2 GB and thus device with 512 MB is pretty much screwed. Thankfully Nix is not using that memory most of the time, and thus we can use swap without hampering the performance that much. * Firewall configuration right now expects at most one NAT network thus forget about multiple networks. There can't be dedicated network for you IOT devices or for your guests. * Hostapd configuration is complex and it is pretty hard to configure functional Wi-Fi with higher standards than 802.11b. * VLAN filtering on the switch is not easilly configured and thus you have to use multiple bridges to separate networks. This also means that having untagged traffic on the same trunk as tagged one is not easilly possible unless you accept that bridge that contains untagged interface distributes all traffic including the tagged one. This repository provides the following functionality on top of the standard NixOS: * Minimal system configuration to support Turris Omnia and Mox. * Simple module for LEDs configurations for Turris Omnia and Mox. * Improved Hostapd configuration as the default one in NixOS supports only single wireless network and adapter. * Simple way to cross build NixOS with path: `config.system.build.cross.${system}.config.system.build.toplevel` * Simple way to build tarball to deploy NixOS to Turris: `config.system.built.tarball` IMPORTANT: This repository required Nix with flakes support thus update your Nix to the latest version and allow flakes. For more info feel free to read ./docs/README.adoc[documentation].