New users are using NixOS wrong (and it's our fault)

I think this YouTube video represents all those videos where linux users install NixOS without understanding what it is about.

  1. They don’t read the manual and fail to install completely. Claim that NixOS is broken or bad.
  2. Or Read just so much that the install works. They get that they have to create partitions, but use the tools they know and don’t create labels…
  3. In this video, he creates users with useradd and uses visudo to use sudo
  4. Then he installs vim with nix-env

He would probably not be able to install a desktop environment.

He probably don’t understand that the configuration.nix can be used after the install.

So, people don’t want to read the manual (what i can understand) und use NixOS like other distros, missing it’s advantages and building their opinion about it from that. Or people don’t bother to try it themselves and build an opinion from such videos.

We need an NixOS install guide that is super simple, so people are not afraid to read it. Or better, an intuitive installer.

We also need onboarding of new users to the concept of NixOS. They are just lost when they don’t read the manual.

We might want to force them to read the manual by removing the option to use useradd by default. It might be better for NixOS when people don’t use it, because they don’t bother to read, instead of them using it wrong and spread an extremely superficial picture and opinion about it.


This might be my ignorance speaking, but: should we have nix-env available on the shell by default on a NixOS install at all? I’m sure it has its use cases, so it should be possible to install/enable it, of course - but I’ve been using NixOS for a while now and with nixos-rebuild and nix-shell combined I haven’t felt the need for nix-env yet.


better yet, I would like to see a calamares NixOS installer for the graphical installer iso NixOS Calamares installer · Issue #100475 · NixOS/nixpkgs · GitHub. A lot of distro hoppers want to be “hand-held” through the process, and having a gui installer goes a long way to accomplishing that. minimal iso can still rely on the manual.

I think we do a poor job in general in “onboarding” people to nix / nixpkgs / nixos. We have decent “reference” documentation in the manuals and Learn Nix | Nix & NixOS; but there’s really nothing there for “getting started”.

A lot noobies (my self included 2 years ago), eventually landed upon ‘nix pills’. However, ‘nix pills’ is more like… “understand the implementation” of nix, and not really “getting started” with nix. I just remember finishing reading it, and going, “wow, I still don’t really know how I should package a simple C program”.


Not only distro hoppers, I always dread doing the whole LUKS/btrfs or ZFS dance. I don’t have to look in the documentation, but it’s still tedious compared to e.g. Fedora’s “just create a btrfs layout with LUKS, done”.


Well, this is exactly what our manual tells them to do ;). Section 3.1, point 7:

Literally suggests the reader to use useradd and nix-env. So, we are telling them to do the wrong thing ;).


Thats exactly my saying, though still it is recommended in the chats (discourse and IRC) quite regularly, I see it mentioned at least once a week, proposed to new users that struggle with mkDerivation.


NixOS could be debated, but with plain Nix it would be weird to not have nix-env, because there is no straightforward manner to add packages to your environment unless you know home-manager.


The problem is that, unless it’s really a program that is really trivial to package, you cannot really package things correctly without acquiring the level of understanding that is provided by the Nix Pills. Until I read Nix pills, I was just imitating by copying from nixpkgs until it worked, but I didn’t really understand what I was doing. Only after reading Nix Pills things started to click.

(I agree that Nix Pills is probably not a good start when you just want to use Nix, as opposed to writing derivations.)


Yes, I meant on NixOS specifically - “Nix outside of NixOS” is a different story indeed.

[quote=“danieldk, post:7, topic:9973, full:true”]

> NixOS could be debated, but with plain Nix it would be weird to not
> have `nix-env` , because there is no straightforward manner to add
> packages to your environment unless you know home-manager.
> [/quote]

> Yes, I meant on NixOS specifically - "Nix outside of NixOS" is a different story indeed.

I think we should, It’s still the quickest way to install software in
the install environment that doesn’t come by default in the install image…

1 Like

I tend to use nix-shell for those. Which again is not necessarily accessible to new users and therefore I agree on nix-env beeing a nice addition to the installer.

And in general I even consider nix-env a valuable tool for nixOS, as

  1. Without beeing able to edit /etc/nixOS/configuration.nix it is the only way to install software permanently for “regular” users.
  2. As a consequence home-manager not used as a module can’t be used without nix-env beeing available.

An important part of NixOS marketing strategy could be a hoard marketing, organize activists to keep track of any mentions of NixOS and going there in huge crowds explaining what benefits NixOS has and how to use it properly

I don’t know, I think in various places Nix is already getting the reputation of being overhyped.

Then it means we probably should focus on coming and explaining that it’s not for everyone, but certainly has it’s benefits.
The point is, that hype is the opposite of what a project like nix needs, being well known and recognized for its strong sides is.


No, but you can provide a narrative for understanding the intuition behind something, without having to plunge all the way.

This is what I was trying to do with some of my videos:

Personally, I find it easier to understand a concept if I have some way to relate to another “known” concept. “nix pills” is bad about this, because it introduce a new term, then try to show examples of how it can be manipulated; but if I don’t have an intuition about what that term did originally, then it’s harder conceptualize why the changes are significant (or not significant).


I just realized something about the homepage that’s confusing, too. You’ve got two columns, Nix and NixOS shown prominently, then under that two buttons: “Download” and “Get Started”. Download has options for both Nix and NixOS. But when you click on learn the prominent “Get Started” only has info for Nix, not NixOS. If you scroll down further, you find “Installing NixOS” under “NixOS” manual. Clicking on that, you get dumped into the install section of the entire manual. And indeed, the install section tells you to use nix-env and useradd.

So I think the most natural path from the website gets you straight into detailed installation instructions, but fails to introduce the overall concepts and best practices.


I created a new topic to discuss this issue from the perspective of Nix used on a non-NixOS Linux distro, so this topic can stay focused on the NixOS angle: New users using Nix (not NixOS) wrong.


In my opinion, the easiest way to counter such videos is to have a
“This is how you really should use nixos” video (I did not check if there is, so no offence). In fact, the problem is that the impression on NixOS is formed by non-nixos’ers that, of course, have no clues how to use all the features you would install NixOS for.
If there is a video that’s right about NixOS, I would klick it, just to ‘hype’ that :slight_smile:

I want to reiterate on this comment. There has been a lot of “marketing” efforts around Nix / NixOS and honestly, this is great, but to me the main issue of this user is that they do not even stop to consider that NixOS might be an entirely different thing compared to what they are used to with the rest of Linux distributions.

I’d like to seriously ask whether there is not a mistake in trying to make it look easier than it actually is to install NixOS.

In my (academic) environment, I’ve always been a strong advocate of Nix and NixOS, but I also discourage people to install NixOS without having first learned at least some of the Nix language by practicing Nix in another Linux distribution.

Nix is great: it is easy to install and you can start getting the benefits (especially if you’re a programmer) without taking any risks. You can learn to write a bit of Nix by preparing some default.nix / shell.nix for your projects.

NixOS is even greater but the learning curve is steep. Once you’re in the NixOS world, you face a lot of hurdles due to the unusual way this distribution is built. Therefore, you need to be aware what you are choosing and what are the benefits so that you are ready to pay the price. Especially, if you do not know anything about the Nix language, how can you even configure your system? OK, maybe in the future, there will be a graphical editor for configuration.nix, but until this is the case, we should really ask ourselves whether we are pushing too many unprepared users into NixOS.

I’d rather have a smaller growth rate, but with users that stick to NixOS, rather than a lot of users that try NixOS and become frustrated and disgusted by it.


I think being up-front about the negatives is perfectly valid. When I was “hyping” up the 20.09 release, I had an explicit “What’s the catch?” section . One of the worst things you can do is “mislead” people into thinking this is some promised land. It is the promised land in many regards, but software is complex, and there’s often times compromises that have to be made for things to “just work” (buildFHSUserEnv, etc).