Overview of pinning techniques
Nobody has claimed this yet.
- Dominant language
- Nix
- Stars
- 4k
- Forks
- 339
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 7
Description
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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the listed pinning techniques and the linked article, then gather the relevant Nix documentation for each approach. Compare their features and trade-offs in an overview, making the scope and conclusions clear; the issue does not name a target file or test.
Written by the indexing model from the issue text.
Assessment
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100