You know why reinstalling Linux is annoying? Because you have to remember (or write down) every piece of config you ever changed. Dark mode in KDE? Change it in settings. Some systemd unit tweak? Change it in /etc/systemd. Want to run some commands at boot? Use systemd (see above), or write an initrd hook (distro-specific). Need a specific version of an app? Need some files in /opt? Need certain packages installed? You better remember to do that!
In NixOS, you “reinstall” your OS every time you change a single setting, because reinstalling NixOS isn’t scary at all - everything that needs to be changed is configured in your configuration - just make sure /home and /var/lib are saved (and perhaps some other dirs, I have root on tmpfsand bind mount all persistent files I need to ensure I know what needs to be preserved on clean reinstall and what doesn’t).
Want to move it to a different PC? No problem, copy the files in /home and /var/lib and simply install NixOS using the configuration you already have on the new PC. Want to create a boot option with slightly different kernel or kernel options, or maybe even another DE? No problem, specializations got you covered.
And of course, this also means it’s easy to share configurations for specific use cases. Want to run on some specific hardware that doesn’t work out of the box? Perhaps nixos-hardware got you covered. Want a certain program set up? Maybe there’s already a NixOS option for system-level config or a home-manager option for user-level config, worst case you can write it yourself and share for everyone else in the community using flakes, and maybe open a PR to nixpkgs/home-manager. Want to share configuration between systems? That’s easy, put them in the same flake and write a common module shared between all of your systems.
Basically, if you’re fine with whatever comes out of the box in any Linux distro, you don’t need NixOS, but if you need configuration, if you run servers, it is a lifesaver. I switched from Arch, no regrets. I run my personal laptop, my server, which I effortlessly migrated from Oracle Cloud when they quit Russia, and my router on it, here’s my NixOS/home-manager config.
The only downsides are the learning curve and the fact that you can’t “just” run programs that expect a FHS layout. You can do it with workarounds like steam-run or appimage-run anyway, but overall be prepared to learn to package stuff for NixOS. Also if you have no experience with functional programming, the Nix language may be hard to understand at first.
kinda, preinstall/postinstall scripts expect to run on a clean system, while NixOS can be changed without a full system wipe, you don’t need to redownload/rebuild anything you’ve already downloaded/built.
Want to move it to a different PC? No problem, copy the files in /home and /var/lib and simply install NixOS using the configuration you already have on the new PC.
How/can one separate some changes from others? I don’t want my server to be identical to my laptop. How does one install a package which won’t be installed on a different machine at a later time?
You are able to have different configurations spun up from the one file by using machine names. My main machine is pretty barebones with minimal applications, but my laptop is even more minimal.
I can’t move away from Proxmox right now for my servers but the option is there if I want to spin up some containers using similar Configs and such.
The reason I really like NixOS is it’s by nature very robust. Your config is the almost universal truth about what’s installed on your machine and if it works
For example, if I make some change that breaks my whole system, I simply boot off the last working build, then revert my config to the previous version in git
Also, if there’s a package in the nix package manager you can say with 99% certainty it will just work out of the box, and if it doesn’t there’ll be a config option you can enable to get it to work
Also also if you move to a new machine you can copy over your config and the machine is built up just how you like it right out of the gate
Also also also if you do software dev you can have development environments that have all the packages you need for that project and only those packages
Also also also also you’re not gonna run into the issue later down the line of having loads of random shit installed on your system in 3 different package managers and 9 different places, cleaning up your machine is as simple as just removing the entries from your application list
Stupidly easy to install things too. If you want to install gnome desktop as an example it’s as simple as adding
Musk is an idiot and his handling of Twitter is even more idiotic. But can we not use unsourced screenshots of note taking apps for this community? If there’s substantiated news, post a link to a decent source. If we allow these kinda posts just because we agree with them, we’re gonna be very vulnerable to misinformation (case in point: the fact that there’s articles saying that they resumed paying this bill).
Does this take into account that Twitter’s new CEO has resumed paying Google? I can see that maybe the tumult could have caused a lapse in the contract until a new arrangement is finalized, but that’s just speculation.
lemmy.ml
Newest