I just switched one of my systems over to NixOS from Arch and so far it seems interesting. One question I had is regarding the nix-shell. So I get the basic concept of it and that it allows creating a shell that has packages installed with that shell making ideal for dev environments. I’ve even seen talks where the suggest nix-shells over docker/podman, my question is how is persistent data (like databases) handled?
How do you use your computer? Did you really just blow away your OS and jump to one you just heard about? I ask because I spend many months preparing to make the move, and I’m still working at a deficit, since my 4 year old OS had so many hours of tinkering that went undocumented and forgotten. Im still slowly configuring my nixos box. How did you use your computer?
I backed up my 2 year old Debian 2 weeks ago and burned it down for NixOs. With the exception of getting Nvidia prime straight and having to learn configs multiple times as I did the start with flakes or home manager, It’s been incredibly smooth sailing.
It took me two or three days on Debian to get OBS and plugins straightened out. Nix worked with just a couple lines of config. I had Nix back to where I left off with Debian after approximately 2 days.
Being able to see other people’s configs and dork around with what other people are playing with without screwing up my system we’re going through dependency hell is nothing short of amazing.
Well, part of the point of NixOS is to eliminate that whole issue of forgotten tinkering – the whole system is defined right there in a few modules, or even one file, and there’s no way for un-tracked tinkering to exist outside those files.
But can I ask how you use your computer? What goes into these months of prep? I really can’t imagine it.
My old OS is kind of a blackbox, in the that I played with countless tools, and I’m not really sure what I will want to reference later. For instance
- Configure different wine tweaks for games
- Playing with Monero and crypto wallets/miners
- Different VMs for tinkering with OSs
- Self-hosted software in docker containers, plus volumes
- All the software tools I used for projects
- Video game modding: some in linux, some in the “windows filesystem” created by steam with proton
- Software installed from programming package managers: pip, cargo, npm
…and on. I played with a lot of things without regard for longevity or preservation. I didn’t even takes notes on what I did most of the time. So I got very worried about just switching OSs without a plan in place. Ultimately, I ended up doing the following to transition.
- Started adding flakes to all my development projects. This would let me get my environment well defined before messing with my installations.
- Installed nix and home-manager, and started slowly uninstalling packages from cargo/pip/apt/npm/flatpak/appimage/snap and add them to my nix config.
- Bought a second ssd so I could preserve the current OS as is (this was much easier than shrinking partitions and install nixos alongside it, but it could have been done)
- Finally made the jump, using the NixOS configuration on my laptop as a jumping off point. And I still reference my old OS as is, booting into once in a while to remember where things were. I don’t know if I’ll ever actually wipe the drive. I’m just not sure.
But of course…I’m on NixOS now! So much of these configurations and lists of software packages, will be documented forever.
Honestly, I barely use it at all these days. I do most of my computing from my phone, so would be very hesitant to just blow that away on a whim like that. But on the desktop where I don’t do much, it’s fine.