# NixOS based router in 2023 - Part 2 - Software
This is the second part of my journey of having NixOS based router on BananaPI R3 board (bpir3) in which I will focus more on the software side of things.
The first part is [here](../router2023/main.md), however reading it is not essential for understanding of this part.
Before we begin I want to briefly mention that there are two different ways to have a reproducible router. The obvious one that I took is to just install NixOS there and configure it to serve as a router.
The other one is to use OpenWRT, write your configuration in a declarative way and render set of uci commands to apply on an OpenWRT instance.
You can read more about the second approach here: https://github.com/Mic92/dotfiles/tree/main/openwrt
## Motivation
I decided to write this blog post because I enjoy sharing what I've learned. While researching, I came across several similar blog posts (references at the bottom) that were valuable learning resources.
However, some of them didn't cover all the aspects (e.g., Wi-Fi setup), relied on legacy approaches (e.g., network-manager), or involved complex and manual configurations.
My goal is for my setup to serve as a reference for future NixOS enthusiasts. I aim to keep it simple enough for an average developer, like myself, to follow along with ease.
> There is beauty in simplicity.
My configuration is public and can be found [here](https://github.com/ghostbuster91/nixos-router).
This file has been truncated. show original