Usually, I prefer manually installing the packages needed for getting started with a new language or technlogy.
I avoid using distro package managers since they tend to be a bit outdated in this regard, and specialised package managers like SDKMAN! seem overkill for one or more packages. Exceptions being languages with excellent tooling and version management like Rust or Ocaml.
I’ve been doing this for a while and was wondering what the general consensus is
Edit: Thanks for your replies everyone! I’ve decided to stick with my distro package manager.
I use Nix, even on my Ubuntu machines, to install tooling in my user profile.
Nixpkgs unstable stays pretty up to date. The few I want something on release day or bleeding edge nightlies, I override the derivation source. I use nvfetcher to pull the latest release or head of the default branch as part of my update routine.
I’m pretty new to Nix, so its been slow integrating into my workflow, but I plan to start integrating flake’s into my repos. My team seems to have constant issues with keeping their tooling up to date which breaks things locally from time to time.
one more for using nix, but for language tooling I generally prefer a nix shell and installing per project dependencies there. then updates don’t break random projects and you know all the dependencies of a given project