Skip to content

Overview of pinning techniques #907

Open
@fricklerhandwerk

Description

@fricklerhandwerk

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    guideTopics for a new guides

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions