Marketing Team: Can we present Nix/NixOS better?

NixOS is a modern and flexible GNU/Linux-based distribution that is both archaic to install and maddening to set up.

Source: https://www.linuxinsider.com/story/85289.html

I have no choice right now and have to spend most of my working time on NixOS automation. To this moment of time I have more than 10 years experience of using different Linux distributions and more than 6 months of NixOS experience. And most of my experience with NixOS is bad experience.

Source: Why you should never ever use NixOS

Also not very positive.

So I’ve read through the thread more carefully, and a couple of thoughts:

First, I think that Nix/NixOS could be a broader tent than people are giving it credit. Yes, it’s not a “beginner’s”/“user-friendly” distro and never will be (an over-saturated market, in any case), I think it could be accessible to anybody with relevant technical skills (e.g. some prior knowledge of Linux shells) and a willing to learn something new. In other words, I think anybody who can learn and use Arch, Gentoo or similar distros should also be able to learn and use NixOS. As people have said before, one the biggest hurdles is using Nix/NixOS is its documentation. It needs to be more easily navigable and better organized. But this is somewhat out of the marketing team’s hands. @SRGOM does raise a good point that these “power users” can something be a bit … prickly to deal with (I guess I could), I think have a larger userbase in general would be a bigger benefit than a cost.

Second, regarding installation, I’ve had a pretty good experience with installing NixOS on two machines now, by following the instructions in the manual and asking some questions on IRC, so I don’t think having a graphical installer should be a priority. I think having a simpler TUI installer is something that should be investigated, however, if it help those experienced users install the OS quicker and with less pain.

1 Like

I don’t think this is a constructive approach. One of my PhD advisors taught me that the reviewer is always right [1]. I think this extends beyond scientific papers. There are things to learn from such reviews, such as: the installation is difficult, even for experienced Linux users; and the marketing copy did not set the right expectations.

[1] Excluding malice, of course.

People will always approach new things from what they know and from what are the dominant paradigms. If you do things radically different, you have to take people by their hand and guide them through it.

In the case of Nix/NixOS, I think many people are better served by installing Nix on their favorite distribution first. The NixOS learning curve is far less steep when you already know some Nix and users may be more motivated once they have experienced the benefits of Nix. If this is generally agreed upon or shown to be true in user studies, you may want to steer people towards first installing Nix on the NixOS page.

I also think efforts like @FRidh 's Nix tutorials as interactive notebooks are awesome, because they let people perceive the benefits of and play with Nix without immediately jumping in deep.

8 Likes

I’d really like to see him installing Arch Linux…

It’s from the terminal as well. You have to edit, adjust and create a lot of files or symlinks.

On arch one has to create partitions by hand as well, and one even has to chroot into the system to install, to do final adjustments.

NixOS’ way of creating a stub config and reviewing that single config is a lot easier than an arch install.

Main source of trouble for him was his impatience when the “installer” didn’t show any indication of progress after spitting out the warning.

2 Likes

I sort of agree and disagree on that. I do agree that jumping on to a whole new distribution which, in addition, forces you to learn new concepts and maybe even to write some code, is daunting.
However, one of the best arguments for me personally (and in discussions with non-NixOSers), the ability to rollback changes or botched updates, is a huge improvement on other distributions. You lose this advantage when you’re just using Nix, though.

Why not use VM to craft your configuration when you are trying to migrate. You could try it out in a completed environment while not get your hands cuffed if you are not familiar with nix.

1 Like

For a long time, this was a convincing argument. However, other distributions are getting there (albeit in different ways than NixOS). E.g. Fedora Silverblue provides atomic updates through OSTree snapshots. One of the main features of Ubuntu 20.04 is zsys, which uses an APT prehook to do a ZFS snapshot before installs/upgrades. zsys will also generate GRUB entries, so that you can boot into older snapshots.

These approaches may or may not be as elegant as NixOS, but atomic upgrades and package installs will be commonplace in 1-2 years, especially with Canonical pushing this.

6 Likes

Don’t want to diss the Arch install but in light of this discussion I placed the NixOS and Arch install guides next to each other. I find the NixOS install guide more informative and providing clearer steps than the one provided by Arch which assumes knowledge about partitioning and totally skipping that explanation.
And then there are a LOT more steps to follow in Arch before getting to a reboot.
The one thing you have on NixOS after a reboot is mostly not mentioned, the rollback.
One can provide more or less the negative comments from this video, I also found one from 5 months ago that is spot on

arch install: follow multiple differet steps with each step adding a chance of failure and breakage; very hands-on experience.
nixos install: partition then edit one declarative config file for the entire system. Everything’s laid out for you and you just have to uncomment/edit.

i fail to see how that is harder or less straightforward. It’s so hands-off you can deploy servers without a single input. you said it yourself: you follow clearr steps to install arch, and so should be done on this one.
What makes nixos special and needs to be highlighted is that the system has no mutation. You declare everything and it handles the rest. System state is always going to be the same no matter where you take your config file. That makes things like dotfiles management, testing out software, and doing backups an absolute breeze. It really is next-gen.

3 Likes

I’ve been reading about OSTree some years ago, they do refer to Nix(OS) as being very influential for them https://ostree.readthedocs.io/en/latest/manual/related-projects/
After reading a very promoting article about Fedora Silverblue on LI I got a bit sad, couldn’t resist to comment on it though :slight_smile:
Realizing that the backing of (money from) Redhat and perhaps a greater community would drive their project much more forward and leaving Nix and NixOS in the dark after some years.
Seems time goes fast these days…

1 Like

Ah, thanks for the insight!

this is off-topic, but here you go

some people fear it, but the arch linux is not that hard

here you will be very mad, because he does hundreds of steps while nixos would just needs some. but i guess he was more motivated because arch is cool in that community and he really wants to try it while nixos is just another distro someone requested him to review

so to make a good impression on people just trying out nixos, the install and onboarding process has to be very smooth and the user has to learn the basic concept and it’s advantages while doing so

1 Like

For DevOps: there is a big impedance between “garlic” Nix Store and “onion” Docker (which dominates the DevOps/cloud scene). Nixery, which made an attempt to do something to fill this gap, received big number of Github stars. That means people is interesting in combining these two approaches. But there is no good solution yet.

3 Likes

It would be amazing if we had a smooth and well-documented process of setting up your nixos system offline, i.e. from your existing (nix-supporting) system. I think the biggest hurdle of installing an OS is the “downtime” on your main or only workstation.

Imagine you could

  • install nix on your existing ubuntu system
  • configure your ideal nixos system
    • the absolute minimum would be to create a configuration.nix
    • it would be great to also support setting up the drive partitioning
    • even better would be home-manager support
  • do some kind of nixos-rebuild build-vm that launches you into a VM that looks exactly like your real system will look. Ideally with support for some state, so that the user can poke around a bit.
  • iterate on this (maybe over the course of weeks and months, at your own time) until you’re happy
  • do something like nixos-rebuild build-install-medium to build an ISO. Flash that on a USB drive. Boot into it. Install exactly your system with one click, maybe with an additional confirmation prompt for the partitioning if supported.

I think that would be a lot more useful than a graphical installer and would appeal to the right kind of audience. I don’t plan on working on this, but I think it would be great.

8 Likes

It feels like there is way too much emphasis on making nixos easier to install.

If I am being honest, I don’t see the point. As others have already noted, it is already quite a bit easier/faster to install a working nixos system than it is to do an Arch install. But to me, that isn’t really the point.

No matter how easy you make the install, the individual still needs to go through the steep learning curve of nixos which is vastly harder than the install process. If you make the install more accessible you are just accelerating them before slamming them into a brick wall.

Learning nixos, especially if you don’t have a background in nix, requires some serious tenacity given the current state of the documentation. If you can’t get through the install guide, which is already well documented, you aren’t going to be successful in nixos.

Rather than trying to make the nixos desktop accessible to everyone, it feels to me like time would be much better spent trying to raise nixos as a desktop awareness among the community that has the best chance of being successful with it. Namely, people with a development and/or advanced scripting background. It seems like this audience would also be more likely to contribute as well.

To me, more education about what nixos is and what it isn’t in a prominent and accessible location would be more likely to dissuade the user who isn’t likely to be successful and encourage the user who is.

10 Likes

@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:

  1. 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.

  2. 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.

  3. 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?”.

  4. 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.

3 Likes

Yes, documentation should be put on priority. Most of the time we would ask “How to do X in NixOS”. But currently users need to search around and look into the codebase of nixpkgs (it’s not bad but unpleasant and steep to go for beginners). And most importantly, they would need patience since writing working and aesthetic code would be different than hacking around with scattered files. (modularity and concise code always bring pain:)

It is great but it is not that prioritized. Users they are not lazy (imagine how they devote their time on Arch to resetup the whole stuff again).
Currently some module is exclusive to NixOS but not to Nix on other linux distros, so I would afraid how would nixos-rebuild handle this on places other than NixOS.
And while have an ISO cooked up is great, it is not that necessary because you could write a script to do so-called “one-key installation”. Like this:
https://raw.githubusercontent.com/LEXUGE/nixos/master/install.sh

Would this help for dev experience- Nix monorepo size and contribution

I could add a few more steps - like how to manually run and test your own change if someone has a concrete feedback.

As a reference I find this video is providing some good info on packaging, although it’s from 2017

1 Like

Seriously, it is way easier to work in NixOS, at least its idea of centralizing all configuration in ideally one language and one file makes it way easier to configure big systems.