it is NixOs right for me?

The bad of other distros

My use case

I use my computer for everything. I mean, I develop software, run games, and have an
android emulator for some apps, and run some selfhosted services such as jellyfin.

I want a stable setup that is similar to the production server, as the software
I develop mostly things that I use myself and then deploy to the web for
people using it

Debian/Ubuntu

This is a stable until you need the latest software and you start adding too
many external repositories, or the other setup it is using other package managers or
formats such as flatpak, snaps, appimages etc…

Arch

The software is always up to date, with the AUR having a large software repo, I could use one
single package manager for getting most of the software I need, the problem started when it
started to break dependecies with my own projects.

Also is not fun when your system breaks due to running an update, and this has
happened sometimes with arch with driver, python packages …

Another problem that affects both distros is the following:
I used the archinstall script, and I didn’t notice that by default it creates a
root partition of only 20GB, most the space was used by packages, but I couldn’t
figure out which packages were needed for my setup; uninstalling one would break
the dependency of another, making me have to reinstall without knowing which
packaged I needed for which projects, which packages could I safely delete
etc…) or resize the partition

The good about Nixos

I have been using NixOs a week, and configuring my system with nix os made it so
that I could easily remove packages that I didn’t need, have both unstable and
stable versions of software, rollback changes that would break my system

and something that I couldn’t do on the others, my system computer doesn’t works
and she has to use my computer from time to time, with NixOs I could intall
different packages for each user, and the 2 desktop enviroments didn’t messed up
with the config files.

The bad about Nixos

I don’t want to nixtify everything, and it seems if I want to keep using nix,
will have to.

For me configuration.nix it is enough, but when I do things I consider
normal in other distros they are not on nix os.
In a lot of forums, Nix solutions are recommended for everything, like flakes.
Home manager, which are still experimental features.

  1. Changing the GTK theme using a zsh shell env variable
    hyprland wiki

  2. CS50 library
    I was doing the CS50 course again and I needed to use their
    (library)[https://cs50.readthedocs.io/libraries/cs50/c/] which is not package for nix,
    in a normal distro it is just sudo make install.
    but on nix I have to look into the docswhich are not great, and write
    dozen of nix files.

I said well on the distros it is not reproducible, so let’s try writing the
required nix files to make it work

  1. A broken package
    I have tried installing (taskell)[GitHub - smallhadroncollider/taskell: Command-line Kanban board/task manager with support for Trello boards and GitHub projects], but even though I allowed broken packages in my config, it wouldn’t install

  2. No able to run linux binaries

I said, Well, let’s try to run the binary, as nix os is not a FHS complaint.
Not able to run them.
Making shell files for each project binary that I want to use disrupts my
workflow.

So I turn to the community for providing guidance in how to make NixOs work, or
Maybe I should use something else.

2 Likes

You can get around this most of the time with nix-ld.

Using NixOS currently does mean you are a minority user. Just like trying to play video games on Linux, often doing something on NixOS means you’re off the beaten path and will need to know and tinker more than someone who uses ubuntu. That can indeed be a PITA.

I get around this these days by running a fedora VM every once in a while when I need to pass a hurdle quickly (though this is getting rare as I learn more). People also often recommend distrobox. nix-ld helps a lot already.

NixOS has been what I always wanted from a Linux system, so obviously I think it’s worth learning the limitations and how to get around them. I don’t think people here can make that decision for you - but well, if you struggle with something more concrete, come ask us, people here are friendly and happy to help.

home-manager is not experimental in the slightest. It’s just not part of NixOS itself, but an incredibly useful and popular third party project. People are doing themselves a bit of a disservice by ignoring it just because it’s not an inherent part of NixOS.

Open up a separate thread about this! Broken packages are usually marked broken for a reason (this is a haskell package, probably some annoying dependency mess), so it likely won’t work, but you can definitely install them. Might just take a look from someone more familiar with NixOS to get it to do that.

8 Likes

If your evaluation of Debian is «it’s good until I need fresh stuff for development or different packages for different users», maybe consider Nix-on-Debian.

Basically the question is what you find nice and what you find attached costs.

You can use nix-shell with whatever software you need, as with Nix on NixOS, and nix-shells have all those rollback/package-conflict-avoidance properties (and you can also have per-user buildEnv’s added to PATH if desired etc.), but the top-level system is still relatively bare-bones (because the messy stuff is in nix-shell or buildEnv’s) thus familiar and predictable Debian installation. And I am pretty sure you can install 2 DE’s on Debian proper and switch on login — and use Nix-on-Debian for per-user packages.

In principle, you can learn to use buildFHSEnv to run some software in Nix-managed but almost plausibly FHS environment. This might be a good idea if you do like to manage the top-level with NixOS but don’t want to bother with nix-wrapping all the things. sudo make install is probably still a bad idea there, but installing something to an alternative prefix will probably be close to how it is done everywhere.

Also note that people will write how to set the environment with HomeManager (not experimental, not flake-dependent, just out-of-Nixpkgs) because that’s Nix specific; if you only need to set a variable in zshenv, it will also work by editing zshenv (and Arch Wiki probably has a better explanation of the possible values than we can hope to write so we just go read there).

5 Likes

For development, IMHO NixOS gives you a better visual on what’s installed and how things are setup as you’re likely need to declare everything (at least that’s one of its intent).
Having used Ubuntu for about a year for development purposes, I found NixOs requiring more initial time but less long term maintenance, easier to debug as well as all is declared so you can see what’s there.

VM’s are also a good way to encapsulate what you need for A or B, that can be any OS’s.

In my current development setup, I run NixOs with bare minimums then I would create different desktop environments with VM’s for e.g personal projects, a different one for work, another one for very specific setup or testing, etc.
I do run those VM’s with NixOs to better track changes, what’s installed, etc but you could run anything.

For gaming and “personal” stuff, I multi-boot with whatever is convenient for me - I’m running Windows for daily’s and gaming atm.

I like to keep my work / dev environment separated from my daily’s / gaming / etc setup, much easier to manage and less likely to get messed up.

1 Like