@dalto I agree entirely with your assessment about the installer.
I think that identifying the most common pain points in NixOS usage is the key first step to figuring out how to market NixOS better. Can we come up with a ranked list of what the most common pain points are? Once we have that list then we can better know where to focus efforts for the most impact. I’ll take a stab:
Documentation. Somebody gets interested in NixOS, installs it, then asks “How do I do X?”. If they can’t do X easily then the knowledge wall they face to figure it out is often insurmountable. They likely need to understand nix language and how to contribute to nixpks which is a ton to learn! There are already a lot of great ideas bouncing around about how to improve docs. Maybe a highly detailed list of mappings – “if you wanted to do X in other distros, this is how you do it on NixOS” is what is needed to ease the transition of people’s existing mental models into the Nix mental model.
Discoverability. This goes hand in hand with documentation, but figuring out how to configure parts of your system can be quite difficult. It often requires reading the nix expressions of packages to figure out how to configure them. This is where a packaging and configuration GUI would do wonders. Easy search and browsing of all the packages, modules, and their configuration would greatly ease the curve of learning NixOS. This would be extra beneficial if the UI were able to show the text diff of the config file – allow the user to play with options in the GUI to see how those things are accomplished in nix expressions. This would alleviate a great amount of frustration in learning how to accomplish most common tasks in the nix language.
Common patterns. A lot of users probably end up with very similar looking configurations when they’re working on common tasks. Providing a set of “recipes” for common workflows either as documentation or well commented modules could go a long way to bridging the gap between docs and “how do people actually do this on their systems?”.
Developer experience. Making a simple contribution to nixpkgs is pretty daunting for a new user. They have to understand a lot of details about nixos channels, binary caches, somewhat advanced git usage, etc in order to do small things like bump a package version or add a small option. Maybe some examples installed by default with nixos could help a great deal with this. Or perhaps an option to easily install an editor with a standard configuration of nix language support.
My personal experience is that while I love NixOS, every time I try to use it on my primary machine for work I end up switching back to something else in a couple weeks/months. I can make NixOS work for my daily driver but frequently the mental load and time cost for doing so is too high – I have work that must get done and sometimes I feel I can’t spend time working around difficult parts of nixos to do it.