>A bit of a pain that there's no universal one for all languages, but I guess that would be just too convenient...
Nix and GNU Guix are capable of filling this role. Not only can they do the things that the typical system package managers (dpkg, yum) lack, but they also do many things that language-specific package managers lack. Transactional upgrades, rollbacks, unprivileged package installation, gracefully handling multiple versions of the same software, system-wide deduplication, full system configuration (if you want to use their associated distro), etc.
I have read several Nix + Haskell success stories on various blogs, so I would say it's worth checking out. Nix and Guix are the future of package management.
Something to be aware of for Haskell: Nix's Haskell infrastructure has gone through a big breaking change recently. It's settled down now, and the new system (AKA "haskell NG") is much nicer, but all of the "stable" releases are using the old system, and a lot of blog posts, etc. online are now out of date.
As I understand it, the corresponding section of the nixpkgs manual is being written as we speak; when this is done, it should reflect the new haskell infrastructure which was merged a few months ago (no longer called haskell-ng any more btw). In the meantime, here are a few links to get you started:
Nix and GNU Guix are capable of filling this role. Not only can they do the things that the typical system package managers (dpkg, yum) lack, but they also do many things that language-specific package managers lack. Transactional upgrades, rollbacks, unprivileged package installation, gracefully handling multiple versions of the same software, system-wide deduplication, full system configuration (if you want to use their associated distro), etc.
I have read several Nix + Haskell success stories on various blogs, so I would say it's worth checking out. Nix and Guix are the future of package management.