Warning: This program is experimental and its interface is subject to change.


nix registry pin - pin a flake to its current version or to the current version of a flake URL


nix registry pin [option...] url locked


  • Pin nixpkgs to its most recent Git revision:

    # nix registry pin nixpkgs

    Afterwards the user registry will have an entry like this:

    nix registry list | grep '^user '
    user   flake:nixpkgs github:NixOS/nixpkgs/925b70cd964ceaedee26fde9b19cc4c4f081196a

    and nix flake info will say:

    # nix flake info nixpkgs
    Resolved URL:  github:NixOS/nixpkgs/925b70cd964ceaedee26fde9b19cc4c4f081196a
    Locked URL:    github:NixOS/nixpkgs/925b70cd964ceaedee26fde9b19cc4c4f081196a
  • Pin nixpkgs in a custom registry to its most recent Git revision:

    # nix registry pin --registry ./custom-flake-registry.json nixpkgs


This command adds an entry to the user registry that maps flake reference url to the corresponding locked flake reference, that is, a flake reference that specifies an exact revision or content hash. This ensures that until this registry entry is removed, all uses of url will resolve to exactly the same flake.

Entries can be removed using nix registry remove.


  • --debugger
    start an interactive environment if evaluation fails

  • --registry registry
    The registry to operate on.

Common evaluation options:

  • --arg name expr
    Pass the value expr as the argument name to Nix functions.

  • --argstr name string
    Pass the string string as the argument name to Nix functions.

  • --eval-store store-url
    The Nix store to use for evaluations.

  • --impure
    Allow access to mutable paths and repositories.

  • --include / -I path
    Add path to the list of locations used to look up <...> file names.

  • --override-flake original-ref resolved-ref
    Override the flake registries, redirecting original-ref to resolved-ref.