There are many other places to showcase how to pursue technological autonomy and self sufficiency in the current era, but usually their guides try to be independent from each other, meaning that if you want to run multiple services, it still requires manual configuration, and therefore there is a notion of “less” or “more” advanced setups, on top of following the guide line by line.
In order to close this gap, and offer guides that work “as is” either in a vacuum, or as part of a larger setup, I have written this section, and propose the use of NixOS as the base OS for setting up everything.
If you don’t want to use NixOS, there are two excellent resources:
- LandChad (started by Luke Smith and added to by other people)
- FUTO Wiki (written by Louis Rossmann for FUTO; Louis is also the founder of the fulu foundation, and of the Consumer Action Taskforce (CAT))
People involved in either are smarter than me and a great inspiration.
The benefits of NixOS cannot be understated:
- The fact that it all packages/services/programs are isolated, and therefore solving dependency issues means that none of the services you run has any possibility of clashing with any other.
- The declerative configuration of the entire OS means that once you have set up a complete solution, you can simply use git to maintain the configuration of your system. This means that should you want to migrate your system (except your actual data), you simply grab your configuration files, and have a ready made clone of your previous system, within minutes.
For the above you need only to tolerate the following:
- Because each process is isolated, each package/service/program needs it’s own copy, making the system a bit more demanding in terms of storage. This is not a significant issue however; Linux in general is extremely lightweight, and this adds a couple of GiBs at most. Once installed, NixOS is as fast as moth other distros.
- Due to it’s unique configuration setup and novel language, there is a steeper learning curve in order to implement a “clean” system configuration, this however comes as a byproduct of a clean configuration being possible in the first place, which is not a thing in other operating systems.
- The documentation sucks. I cannot overstate how annoying it is to find official information on most issues. Thankfully searching online yields good enough results most of the time. You can use the official forums. You can also use any LLM, since they appear to be capable of parsing the code/misc documentation, and be able to handle the boilerplate language parts well enough.
Especially at the early stages of using NixOS, there needs to be a certain amount of trust to others holding your hand and telling you what to do. This is the case for the rest of this guide; In the following sections I will give verbatim nix configuration files, which abstract implementing by hand the services shown. I will not however show you how to use NixOS, as this is not the point of this guide.
- To learn more about NixOS, see this online guide. It might look daunting, but if you are familiar with programing, it’s quite simple. If you are unfamiliar with programming, it’s still of value, although it might make more sense to just “trust me on this” and follow the rest of this guide, as it tries to hold your hand in terms of configuration.