Trying Out NixOS (it's Awesome!)

So, I'm not a big distro hopper, I don't get super stoked to try out every new distro release or anything like that, and my Linux desktop experience has been relatively linear in the way that I progressed through distributions. Starting from the beginning, the Linux desktop distros that I've daily driven are Ubuntu, Mint, Manjaro, EndeavorOS, Debian, Arch, Artix, and back to Arch, where I'm comfy and cozy. Occasionally I'll play around with something that piques my interest like DragonOS (I'd love to do an article on this one after I get the proper hardware!) but for the most part I take the whole Chris Titus purist stance. I use Arch for my desktop because it's home, I use Debian for my servers because it's standard practice and they just work (I'm interested in switching my servers to a BSD, but that too is a story for another day) and everything else is either Arch or Debian based, so why am I even bothering with it? But NixOS has interested me for a hot minute now, and I'm finally gonna break down and spin it up in a VM. Back when I was daily driving Debian on my laptop, I actually used Nix as my package manager for a while, although I will admit that this was totally because of skill issues with apt and installing packages without the AUR to hold my hand, but I liked it. I mainly like HOW MANY packages are available, it's like the AUR on crack, it's absolutely bonkers. Like holy crap. But anyway, let's get started! The isos can be found at https://nixos.org/download/ and we have the choices of GNOME, Plasma, and Minimal. If I was planning on switching to Nix as my daily driver, I would man up and read the documentation, do a minimal install, install qtile, and get my rice set up, but we're not doing that today. I'm just gonna grab the GNOME version and get to work, as we're just testing the waters here. Alright, so here we are 2.4 gigs later booting up VirtualBox. I'm running this on my laptop (which is, sadly, the beefiest machine that I own) so we'll go ahead and give this baby 2 cores and 8gb (8192mb) of RAM, and 50gb of memory since I won't be keeping this VM. Being a graphical installation, I imagine this is gonna be a pretty standard Linux install....and I'm right. I notice that Dvorak is a selectable keyboard layout (I'm actually not sure if this is a regular thing to select on distros as I only recently became aware of Dvorak's existence, but neat nonetheless.) We're just gonna select default lol. I like the check to require strong passwords, but since this is a VM that's gonna get deleted after this article, we're gonna unclick that and totally not set the password to dog123. Next is the desktop tab, which considering the installer is on GNOME kinda caught me by suprise but I'm glad to see that I have options. We, of course have GNOME and KDE, then there's Xfce, Cinnamon, MATE, Budgie, and other stuff that I've never touched like Pantheon, Enlightenment, and Deepin. Point is, if you Linux desktop, you'll probably find something for you. Once again, I'm just gonna go with GNOME because if I had to live in a desktop environment, its what I'd probably choose (new Plasma does seem really awesome though.) The Unfree Software tab is a very classy move, as you, the user, have to consiously decide whether to be free or possibly have driver issues. Setting up partitions is very standard, and has an encryption option, which we always like but won't be using in the VM today. Aaand lets install this baby. This is taking a while, so I'm gonna eat dinner, binge some Cactus Quest, and pass out hoping that the install is done in the morning. And here we are! It's 4:30am, the most productive time of the day, so let's get back to work (before I actually have to go to work in about an hour here lol.) Upon boot, it's definitely a standard GNOME environment,it looks like this is Nix version 24.05, named Uakari, which is a cool name and honestly, I imagine the Uakari genus is what most NixOS users look like (sorry for the cheap shot NixChads!) But yeah, we came here for the package manager, so lets figure this baby out and get some packages installed. NixOS has a good amount of documentation, but I specifically found myself at https://nix.dev/tutorials/first-steps/ to figure out what the heck I'm doing here. This is interesting! Alright, so we're back! It's been a minute (my internet at work is my phone's hotspot so getting most packages is out of the question) but I'm finally starting to get the hang of this and it's a really cool concept. You can try packages out with the nix-shell -p command, which I paired with vim because it looks like all of the REAL fun happens in the config file, located at /etc/nixos/configuration.nix and let me tell you that this is no normal Linux configuration file. It almost reminds me of Docker, where you put what packages you want to use on your system in your portable configuration file, that you can then reproduce on any system without having to manually re-download all of your packages. That's pretty freakin awesome, and I'm starting to see what all the hype is about. I thought that the config file would be more daunting, but it's not. I was able to add and install packages EXTREMELY easy by just sudo vim'ing into the config file, going down to the commented part that says 'List packages installed in system profile', literally write the packages that you want, ZZ out of that baby, then run sudo nixos-rebuild switch, let that baby cook, and you're done. Even better, when you want to add a new package to your config file, it searches for new paths from the current config and only downloads those (I don't know why I was paranoid that it wouldn't.) Basically, this is awesome. From a minimal install (which can be accomplished through any installer!) you can set up any environment or WM you want, with any and all tools that you need, and just keep that baby saved in a config on GitHub. It's truly a beautiful operating system, I'm not going to rice it out with my config, but knowing that I could do it in like 30 minutes then never have to reinstall packages again makes NixOS VERY appealing. Plus the packages are there, you know what you like, add it to your config and go about your business. I wouldn't consider it a noob-friendly distro at all (imagine switching to NixOS straight from Windows!) but if you know what you're doing on a Linux system, you know your workflow and what you're gonna be accomplishing on a system, or if you need to reproduce it any amount of times on any level, NixOS is your operating system. It's honestly given me a different perspective on computing in a way, and I may even migrate to it in the future. In the meantime, that was my short-term review of NixOS in a VM, I definitely recommend it. Peace!