One of the big differences is that a lot of things in NixOS must be done in a declarative way.
Managing your user environment with nix-env
is pretty similar to installing packages with apt
, but drivers, services, anything that must be installed on a system-level cannot be installed this way.
For these things, you have to modify the nix configuration, which is written in the Nix language, a functional programming language.
If you’re only familiar with JSON, YAML or INI files and maybe bash scripts, the way the configuration gets evaluated can be pretty surprising. As long as you’re only configuring simple things, this is not a problem, and the GUI tools you linked help a lot with lowering that initial barrier. (I also want to mention noogle and MyNixOS at this point, they are amazing resources that you’ll use a lot.)
But once an unexpected issue shows up, many of the usual tutorials and guides to solve the issue will not apply fully on NixOS. There will come a time where you’ll have to learn the Nix language, the NixOS module system, intricacies about nixpkgs and subsystems like python3Packages
and many more.
This can be very frustrating, but it can also be very exciting, depending on what kind of person you are. For me it’s both. NixOS solves many issues that other distros can’t even dream to take on, and learning it can feel like you’re gaining a super-power. But you will have to stay flexible in your thinking and not assume too many things, read documentation, forum posts and wiki articles.
Finally, a word of warning about GUIs and tools that build on top of nix; they can be very useful, but they are all very leaky abstractions that can only get you so far. You’ll also notice that many of them are maintained by one or two people and don’t get a lot of updates. If push comes to shove, understanding Nix itself will help you greatly in solving problems yourself.