It doesn’t have to be an all or nothing approach. I wanted to switch to Nix but got lost way in the weeds with declarative partitioning, immutable OS with impermanence and snapshots, fucking coding my own gnome shell with AGS/Astal for Hyprland, and making overrides for bleeding edge software updates from GitHub.
Realising it was going to be a hot minute before I had a daily driver OS, I started using Home Manager on my Ubuntu daily drivers and installing NixOS on some spare hardware to tinker with.
The majority of the apps I use are now managed through Nix the package manager on all my Linux systems.
I do use flakes and what’s installed on Ubuntu is managed with the same files as my NixOS builds. So far I’m really happy with it.
I love nix. I started on flakes and have no clue what configuration.nix, channels, or nix-env even are.
Its pretty much a toolchain to orchestrate a bunch of community bash scripts with some (optional) syntax sugar to do most things right in nix.
Scripts break. So did my own when I left the sandbox of any other distros curated version set. Now its version controlled and I can rollback.
Functional programming skills are helpful. The documentation is shit. Like really really bad. I had to go through a few lib/ src to figure out modules. It just wasn’t clicking until I did with the abstractions until I looked at the code.
I mostly search GitHub now a days for solutions with
lang:nix
and some tokens I know I’ll need and analyze what someone else did.I look at the source for package defs often.
The repl can be handy.