= Things to be done

NixTurris is open-source project without any monetary backing. It is just an
attempt to get NixOS and its advantages to the Turris routers. Please poke to
these topics if you have some free time.

These are big tasks. For the smaller ones please use Gitlab issues.


== Bugs to be solved

Generate template configuration in `/etc/nixos/`:: This is common way
the installation of NixOS proceeds. We would use it only with NixOS rebuild on
site but we should still do it.

PCIe on Omnia does not work:: There are patches that make it work on Turris OS
and attempt to port them to this repository but some important patch seems to be
still missing as it doesn't work.

Boot files should be copied to `/boot` on tarball:: The standard syslinux
generator copies boot files (linux, initrd and dtb) to `/boot` while current
implementation in tarball keeps them in Nix store. This prevents installation on
separate boot partition.

Native build for Turris Omnia doesn't work:: There are multiple packages that
fail to build when compiled natively on armv7. This can be either due to Qemu or
more likely that they are just not prepared to be build on armv7. The most of
the packages fail their test phases as they most likely expect 64bit system.


== Improvements to be tackled

Firewall configuration with zones and masquarade:: The NixOS firewall should be
expanded or replaced by firewall configuration that provides multiple zones with
ability to set NAT between them.

Easier Wi-Fi AP configuration:: There should be some better way to configure
Wi-Fi without reading load of documentation on how to setup Hostapd. One option
is to have minimal user configuration and fill the rest when generating
configuration based on Wi-Fi adapter. The second and probably easier option is
to just provide simple configuration with verified settings for the Wi-Fi cards
shipped with Turris routers.

Minimal system build:: The Nix evaluation consumes considerable amount of RAM
and thus it is not possible to rebuild NixOS on the device itself without using
SWAP. The option is to cut out all modules that are just not required as they
deal with graphics output and desktop. The initial work on that is already
started in this repository but issue is that even core modules depend on desktop
specific ones.

Nix build of U-Boot:: The initial support for this is already present but we are
missing some helper script to flash files to the appropriate block devices. The
Turris Mox firmware also requires combination with ARM Trusted Firmware which is
not done yet.

Boot modes on Omnia to select previous profiles:: By modifying the U-Boot
environment for rescue we might be able to use Omnia standard LEDs rescue mode
selection to select older profiles. The selected led is passed just by set
environment variable to the U-Boot script but we would have to patch the U-Boot
to change the rescue environment.
