377
Principal Skinner on Immutable Distros
(infosec.pub)
Post funny things about programming here! (Or just rant about your favourite programming language.)
I suspect the tooling isn't quite there yet for desktop use cases.
If I were to try to replicate my current desktop in an immutable model, it would involve a lot of manual labour in scripting or checkpointing every time I installed or configured something, to save a few hours of labour in 2 years time when I get a new drive or do a full install.
The case is easier for defined workload servers and dev environments that are regularly spun up fresh.
If you have only one system, you might find the benefits not to be worth the bikeshedding effort.
However, I suspect that you'd be surprised with how easy it can be using home-manager. I have literally nothing that I need to do to a newly compiled NixOS system from my config because EVERYTHING is declared and provided inside of that config.
If you don't mind, can you give me an example of something in your config that you think is impossible or difficult to port to the Nix style? I'd be happy to attempt to Nixify it to prove my point. I've pretty much figured out how to do everything in the Nix way.
and I don't mind if I end up being incredibly wrong on this point and promise to be intellectually honest about it if I am indeed wrong. It just sounds like a fun exercise for me.
I guess the assumption is more that for me, a fresh install is often about decluttering as much as anything-- the five Wayland compositors, three music players, and six pseudo-IDEs I tried and didn't like don't need to follow me to the next build.
In a conventional install, that just means "don't check the checkbox in the installer next time". In a Nix-style system, this is a conscious process of actively deciding to remove things from the stored configuration, no?
I suppose the closest I've gotten was recently migrating my setup from a desktop to a new laptop. Mostly copying over some config from my home directory, but even then, I wanted enough different stuff-- removing tools I don't use on the laptop, adding things like battery monitoring and Wi-Fi control-- that it involved some reconfiguration.
I’d actually argue the opposite in regards to clutter. If I switch to a new config without the software I don’t want anymore, that software goes away entirely when I do a garbage collect and there’s nothing left over like there might be in ‘’~/.config’’ on a non-immutable system.
IMO, the actual realization of Dolstra’s dream is flakes and home manager. They allow you to boil your whole config down to a git repo where you can track changes and rollback the lock file if needed.
I find it nice to open my config in an IDE and search by string inside of my config where I can comment out whatever I don’t need. Laziness also makes that pretty convenient too. Nix will only attempt to interpret what is accessible in code. If I comment out an import, that whole part of the config seamlessly shuts off. It’s quite elegant.
I’m even more envious of the atomicity of GUIX but IMO, it’s a little too much building the world from scratch for a newb like me.