This is precisely why I use NixOS. I have almost my entire configuration as “code” (data structures more like, but what’s the difference any way?), such that when I break something, I can just undo my commits and go back to a working version (and the OS itself retrains several snapshots, so I can always pick the previous one.
And with LLMs the bar to do things, with my nix configuration (nixcfg), has lowered to the ground. Throw in a few videos from Vimjoyer and you got a stew going.
I’ve hopped from HoloISO to Nobora and EndeavourOS to OpenSUSE. Landed on NixOS on all my machines now and it’s perfect. There’s a bit of a learning curve even compared to other distros but once it clicks, you wonder why you weren’t using it earlier.
To get started: Install NixOS, grab your /etc/nix/configuration.nix, and /etc/nix/hardware-configuration.nix (from the top of my head) and throw them in a git repo. nix-shell -p <application> if you quickly need a shell with a specific (temporary) program, like git (just for bootstrapping; add git to the configuration.nix if you wish to keep it.
Start with that, and slowly keep adding programs, configuration. If you eventually wish to add a second computer to the one configuration (so you can start reusing configuration), do that. Keep steps small.
Here you can dig through each step I take in my nixcfg - I started with just the configuration.nix, and share that between machines, but it turns out you’re supposed to add the hardware-conguration.nix to the repo as well, so then I started to do that (with still a shared configuration.nix. Well, partially:
I’ve jumped in Nix/Guix many times and always jumped back out. Sometimes you just want to edit a system file without second guessing or rebuilding the system. Same battle as initRC vs SystemD. Sometimes you just want to tinker live, because there are bigger battles elsewhere and going down a productivity sink hole of immutability is not something you can easily explain away at 3am
This is precisely why I use NixOS. I have almost my entire configuration as “code” (data structures more like, but what’s the difference any way?), such that when I break something, I can just undo my commits and go back to a working version (and the OS itself retrains several snapshots, so I can always pick the previous one.
And with LLMs the bar to do things, with my nix configuration (nixcfg), has lowered to the ground. Throw in a few videos from Vimjoyer and you got a stew going.
Urge to distro hop again…rising…
I’ve hopped from HoloISO to Nobora and EndeavourOS to OpenSUSE. Landed on NixOS on all my machines now and it’s perfect. There’s a bit of a learning curve even compared to other distros but once it clicks, you wonder why you weren’t using it earlier.
To get started: Install NixOS, grab your
/etc/nix/configuration.nix, and/etc/nix/hardware-configuration.nix(from the top of my head) and throw them in a git repo.nix-shell -p <application>if you quickly need a shell with a specific (temporary) program, like git (just for bootstrapping; add git to theconfiguration.nixif you wish to keep it.Start with that, and slowly keep adding programs, configuration. If you eventually wish to add a second computer to the one configuration (so you can start reusing configuration), do that. Keep steps small.
Here you can dig through each step I take in my nixcfg - I started with just the
configuration.nix, and share that between machines, but it turns out you’re supposed to add thehardware-conguration.nixto the repo as well, so then I started to do that (with still a sharedconfiguration.nix. Well, partially:https://github.com/NostraDavid/nixcfg/commits/master/?after=78d40edc8b756088a73fd087808d438eabbcf06f+401
Read nixstory.md if you want to see a quick LLM-generated history of how my repo changed over time (based on my git history).
I’ve jumped in Nix/Guix many times and always jumped back out. Sometimes you just want to edit a system file without second guessing or rebuilding the system. Same battle as initRC vs SystemD. Sometimes you just want to tinker live, because there are bigger battles elsewhere and going down a productivity sink hole of immutability is not something you can easily explain away at 3am
So it’s kinda like klipper/mainsail but for an operating system?
In the sense that klipper does everything through configuration files: yes.