Overview of pinning techniques
fricklerhandwerk opened this issue · 0 comments
fricklerhandwerk commented
Observations
There are > 5 ways to handle dependencies in Nix expressions:
- Lookup paths and their various syntaxes (
<nixpkgs>
,-I
,NIX_PATH
) - Channels
- Paths to Git submodules
- Built-in fetchers (
fetchurl
,fetchTarball
,fetchGit
, ...) - Nixpkgs fetchers (
pkgs.fetchFromGitHub
, ...) - Flakes
- npins
- niv
- gridlock
- Don't even get me started on modules
I likely forgot some...
Problem
- These are too many
- They have different trade-offs
- None of them is clearly superior, but some are clearly inferior
Approaches
We can't fix it before we understand what's wrong.
Make an overview along the lines of Why are there five ways of getting software?. List features and trade-offs.
Willing to help?
Very likely there is no way around it.
Priorities
Add 👍 to issues you find important.