I found these interesting Nix OS articles series for users that want to try it and learn first things, have a good reading!
- NixOS Series #1: Why Should You Consider Using NixOS?
- NixOS Series #2: How to Install NixOS on a Virtual Machine?
- NixOS Series #3: Install and Remove Packages in NixOS
- NixOS Series #4: Things To Do After Installing NixOS
- NixOS Series #5: How to set up home-manager on NixOS?
#nixos #linux #tutorial #guide
What’s up with the ux design of nix? I get it’s made for advanced users but still. I’m reading through this guide and man it’s convoluted.
The different ways of installing packages. Either through editing the configuration.nix or running a command. The weird inconsistency of nix commands.
nix-env -iA
to install andnix-env --uninstall
to uninstall. Then updating usesnix-channel --update
but upgrade usesnixos-rebuild switch --upgrade
. All this to use the package manager. Also haven’t even mentioned flakes or home manager.It’s a cool OS, but the UX really needs work imo.
[Edit] I do wanna add something else too because I feel like my point isn’t getting across.
It’s okay to have a complicated ui. Especially if your target audience are tech-savvy. But even tech-savvy people have to start as new users. A tech-savvy new user isn’t going to know what the best practices are. Being able to anticipate the steps for installing a package is important for ux. If the commands for installing packages isn’t cohesive/intuitive, then the user has to spend more time looking for guides and learning how to use the software.
People also mentioned a new command in the works. This is great! However, these current commands are being recommended through blogs and nix. New users won’t know about this new command.
I’ve read so many things that try to explain what flakes are, and for the life of me I still don’t understand what they are or what they’re for lol.
They’re not that different from the classic nix files. Their main difference is that their inputs are always well-defined (as opposed to a channels registry, i.e. you can get totally different systems by reapplying a configuration when you change channels which doesn’t change your nix file at all). A configuration is always exactly described by a flake.nix and flake.lock.
I mean there is more to it, but this is the primary motivation. What you would normally put into use case specific nix files goes into a flake’s output section. The stuff in your input sections is what you can use in there.