Making NixOS more user-friendly: what's needed

Introduction

Hi all! I am a recent user of NixOS and I had the chance to use it in a virtual machine as well as in the main system as a second operating system.

I really like the ideas behind it. The recently added installer allowed me to get to know the system without actively reading the documentation in the beginning which I think is a big plus.

Description of problems and possible solutions

Here I will describe what I personally noticed. I have tried to take everything into account, but if there is anything missing, I will be glad to hear your comments.

  • Graphical software management. As far as I understood, there are 2 ways - to finish compatibility with packagekit or develop a separate store.

    • Packagekit. It seems more limited to me. NixOS has several options to install software such as nix-env and configuration.nix. The second one is system-wide and the first one is very good for unprivileged users. I have not yet figured out how to implement this neatly without creating a lot of extra code. On the other hand, the configured packagekit backend is more versatile and will probably work in both Discover and GNOME Software.

    • Separate store. In general, there are already such developments that look very for GNOME which really good. However, considering the hard work that this good man has put into creating a standalone store, I realize that it’s still less likely to do the same for at least KDE than an off-the-shelf packagekit.

  • Graphical config editor.

    Of those that are actively supported, I would like to highlight this graphical config editor (from the same creator who wrote the separate Nix package store for GNOME).

    I would also like to know if there is a possibility that such utilities, when already mature enough, could be included in nixpkgs or even in the basic application suite when installed with the graphical environment?

    I understand that some users style their configurations in a special way. However, these utilities can either try to be more universal for everyone, or make them more linear in config modifications and display a warning if the config is “non-standard”.

  • Default binary launcher.

    Although, considering the huge set of nixpkgs packages, some may need to run non-NixOS bin/appaimages.

    Assuming it is possible to add context menus nautilus/dolphin/pcmanfm/etc. to run such files via steam-run/appimage-run, does the NixOS philosophy allow to add this by default/by-choice or is this excluded?

  • Incompatible graphical settings/actions. Some items and system settings like time settings, default mountpoints in Gparted, etc. do not work because the OS relies on a declarative approach to their configuration.

    Here, in fact, I see only one approach - in every way either to remove such clauses, or to make it clear that they do not work.

Conclusion (and what was I trying to say)

There are still questions on how to organize the garbage collector in a more automated/user friendly way, but I think that requires a separate discussion.

With this list and my thoughts, I would like to convey how I (and I am sure I am not the only one) would like to see NixOS.

And by posting these thoughts I would like to know what the community (especially the dignitaries and decision makers in the project) think about this and if there is a chance to make NixOS as user friendly as the usual Ubuntu/Fedora/Manjaro.

5 Likes

There are efforts in this direction already if you want to contribute: SnowflakeOS - Creating a GUI focused NixOS-based distro

Yep, you highlight parts of that effort, and they’re far from ready. I think the community as a whole is split between not caring much about these things for lack of personal use cases and being excited about it but not having time/enough interest to make time (for lack of personal use cases).

NixOS also certainly has a way to go for adoption among more advanced users. I mean, you already started off talking about how cool you think a certain footgun is: stop-using-nix-env.privatevoid.net/

As a whole, I think it may be difficult to get a “user friendly” NixOS that is distinct enough to the kind of user who would need it to actually stand out against ubuntu/debian/fedora. Most such users probably care little about whether their configuration is declarative or imperative, it’ll effectively be the same without maintenance. But it is a cool thought, it’d be awesome to help debug things for friends and people on random forums if I could see their mess directly :wink:

8 Likes

I feel like nixos is still unpolished enough for advanced users that trying to pretty it up for beginners is just not where we should be focusing our efforts right now. There’s a lot on the todo list right now as it is, with getting flakes to non-experimental status, and cleaning up the internal structure and interfaces of nixpkgs.

Also, making gui tools that interact robustly with nix config is a dubious proposition until the nixos module system supports a machine-editable format for module files. If the gui tools are trying to modify a .nix file, there are a lot of inherent potential footguns. Direct modification of the .nix file by the user will always have the potential to break the gui tools, creating an incentive to never move beyond them. So I’d like to see the model be that the gui tools modify a different kind of file with a syntax that’s limited enough to be robustly machine-editable, which may be imported from a .nix file, or the other way around, if the user wants to mix their own nix code with gui configuration.

13 Likes

Thank you for the link! After reading it and several checks, I found that nix-env is really not the best solution for a multi-user system. There will be something to do on the weekend :sweat_smile:

I totally agree. However, that is why I see NixOS as a much more profitable solution even for such users because of the structure of the system:

  • There is no need for a “clean” installation of the system after some time to “clean” it of garbage

  • In fact, you can not be afraid to use different versions of packages and keep them as long as necessary and also then it’s just as safe to delete them

  • It is easier to administer/diagnose the system (since everything is in one file by default)

  • And other advantages already related to atomicity and immutability (secure updates/rollbacks)

All of these, I’m sure, are useful benefits for ordinary users., which right now other projects like ALP from SUSE/openSUSE, Silverblue from Fedora and snap from Ubuntu are implementing through containers/self-contained packages.

1 Like

As far as I understand, will their withdrawal from experimental status make nix-channel less relevant? Or in general, if we imagine that the editing of flakes was beaten using the GUI, then are there any advantages of them compared to the “traditional” approach of the system versions?

A very good point! It really can be more useful and transparent for tracking what exactly this GUI is able to do.

1 Like

In theory. In practice, I don’t think the average user is disciplined enough to actually get there. Typical GUI applications like mixing data and configuration in ways that are nearly impossible to untangle even for advanced users (e.g. Firefox, Chromium, Steam, but also more fundamental candidates like networkmanager, or hell, gnome/glib itself!).

Don’t misunderstand; This is also exactly what I love about NixOS, and why I will continue to use it on all my systems. It’s just painfully obvious to me after a few years of using it that the rest of the software ecosystem is absolutely nowhere near fit for this worldview yet.

Getting more users to adopt NixOS is definitely how we get other software to work, of course. But I think there are a lot of deeper problems than GUI tools that harm adoption a lot more after the first few hours post installation.

For complete beginner users I think flatpaks might offer a nice solution, given that it provides a GUI “app store” with all the GUI applications you would expect to see on a Linux distro. It’d also make users used to imperative desktop use feel a bit more at home initially. Integration with nix is sadly suboptimal, though at least you could have declarative system configuration with an imperative android-style “userspace”.

3 Likes

One of the nice things about NixOS is IMO, that if you have your config backed up, or even better versioned, you can easily reinstall your system without too much trouble.

But as you said configs in DBs or similar make this harder than it needs to be.

1 Like

Unsurprisingly you quoted three non-original distros. Ubuntu came from Debian, Fedora from Red Hat and Manjaro from Archlinux.

Don’t tell me you would cite GhostBSD?

Jokes apart, I believe this is the path to be followed: a derived distro like SnowflakeOS that uses NixOS as a plumbing.

In this case it is even better because snowflakeos can be a flake-overlay.

3 Likes

Yes, and this is one of the advantages that ordinary users may enjoy over other systems.

I agree, but I would like to point out that a declarative approach to at least some of the system packages already provides better protection against such surprises than classical systems.

Which for example? I didn’t mention except updating the system and switching from one stable version to another, but I don’t think that’s the problem :slight_smile:

:grinning_face_with_smiling_eyes:

Do you think that the original NixOS cannot be brought closer to the concept of user-friendly?
I thought the graphical system installer made it clear that it was possible.

It depends about what kind of users we are talking here.
I doubt that we’re going to achieve something like a Chromebook like setup.
There will always be a certain level of expertise required to achieve this.
It would make a lot of sense to define the target group first.

1 Like

I’ve been using nixos for a few months now and I don’t think that what can make it really user-friendly is necessarily the use of a GUI, which can perhaps be implemented on a derivative distro, what I find a little difficult is to find well-organised documentation, especially at the moment where I often find it recommended to use flakes (which I don’t currently use) but which are still labelled as experimental. However, the target audience for nixos users I think is more or less advanced users who should not have too many problems editing text files for configuration as long as the documentation is readily available and searchable.

3 Likes

It certainly can, but I don’t believe it is feasible until some stabilization happens.

We are still struggling with some corners around flakes, Nix (it is still considered slow), Nixpkgs (we are still discussing how to rework the tree), even NixOS itself.

Just do a rg --count-matches "mk\(Removed\|Renamed\)OptionModule" nixpkgs/nixos and you will find how many files use backwards-compatible constructions.

I myself suggested to move networkManager to services. After all, connman was moved before. However, when I tried, I have found a huge block of bugs.

Also, there are many complex packages around Nixpkgs itself. How exactly should we provide Emacs packages or vim/vscode plugins for a non-root user?

I still believe the most successful path is to leverage a third party distro (and maybe phagocyte it).

1 Like

It may sound naive, but I’m talking about the group that could choose a laptop with NixOS preinstalled and have the same level of complexity in installing/administering the system as Ubuntu/Fedora.

Here I agree :slight_smile:

Perhaps you are right.
But in general, as a user with the label Great contributor, you personally see, for example, the supply of laptops or some PCs with NixOS on an equal footing with other distributions in the future (let’s assume that legal/secure boot issues will be resolved, suppliers will be interested, and all the current problems of Nix(OS) that you listed, solved)?

I do not think NixOS is hard to use, if you have good documentation. And that is where my point is. I tried to install hplipWithPlugin and it failed miserably.Always, whatever I tried, syntax error. And the wiki does not provide info how to deal with this. The thing is, the wiki is writen for advanced users, those are users who are not advanced at all, but who are willing to spent days figuring out what is the solution. But solutions have to be found in the Handbook or the wiki. Not on some sort of obscure website. So please stop being “academic”, and start being “human”. Write docs that can be understood by “non-geeks”, also known as “users”. After all, an OS is made to be used. Hopefully by all people.

1 Like

Yes, documentation is lacking. The problem is indeed, that it is written by folks that know what they do, and the wiki is written by those who either knew what they did, or by those who accidentally made something work and did not draw the correct conclusion.

On top of that, the wiki is quite often simply outdated…

Those who wrote the “I know what I was doing” stuff though are not skilled doc writers, they are skilled nix users.

And no-one tells the skilled doc-writers where the urgent problems are, so they fix what they are aware of, on a best effort basis.

When you have problems with the docs, create an issue, ask here, but do not come and say “I tried to install X years ago but there was lacking docs about it” in a completely different topic.

3 Likes

I am not on the anglophone, North Hemisphere side of the globe. I am far from being of help here.

Here where I live a random user have the following options:

  1. buy a laptop (or for that matter a desktop PC) from general-purpose appliance retailers
    • with preinstalled MS-Windows™
    • a long time ago some low quality laptops were assembled at the Free Trade Zone, and as part of the requirements an obscure Linux distro (Linpus, IIRC). It was a bad experience…
  2. build a PC by buying pieces from specialized retailers
    • here you are way more free to install your own OS
    • but it doesn’t mean a great deal - you can overwrite any previous Windows installation, after all…
1 Like

So please stop being “academic”, and start being “human”.

Exempli gratia I am not an “academic”.

Write docs that can be understood by “non-geeks”, also known as “users”

Can you be a bit less cocky and passive-aggressive to begin with?

Not that you tried to learn something from your previous post

3 Likes

Got you, thanks anyway for sharing your opinion! :slightly_smiling_face:

Nixos documentation could literally be colour coded, like ski runs.

Beginners need very basic instructions - that’s all.

If I read something in red, say, then I would know that it involves pretty advanced concepts requiring a pretty good understanding of functional programming etc.

I personally just want instructions in green. I want to use Nixos because it has so much to offer, but I am an IT beginner and I simply am incapable of parsing too much complexity right now.

1 Like