tvl-depot/users/wpcarro/website/blog/content/english/lets-learn-nix-caching.md
Vincent Ambo 019f8fd211 subtree(users/wpcarro): docking briefcase at '24f5a642'
git-subtree-dir: users/wpcarro
git-subtree-mainline: 464bbcb15c
git-subtree-split: 24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
2021-12-14 02:15:47 +03:00

1.3 KiB

title date draft
Lets Learn Nix Caching 2020-03-17T18:05:38Z true

TL;DR

  1. I use NixOS/nixpkgs-channels instead of NixOS/nixpkgs and avoid nix-channel.

More information

  • By default the Nix package manager uses cache.nixos.org as a binary cache.
  • Visit status.nixos.org
  • git clone git@github.com:NixOS/nixpkgs-channels instead of NixOS/nixpkgs. The former mirrors the latter and uses Git branches to track the published channels.

What is a Nix channel

If you run...

$ git clone git@github.com:NixOS/nixpkgs ~/nixpkgs
$ export NIX_PATH="nixpkgs=$(realpath ~/nixpkgs)"

One benefit to cloning nixpkgs is that you can browse the source code on your machine using tools like git and emacs. You can also experimentally patch and test Nix code this way.

If any of the above appeals to you, clone nixpkgs-channels instead.

The Nix maintainers build and test the commits from nixpkgs using Hydra. Tests include reproducibility tests, etc.

Various channels have different verification phases.

The cache at cache.nixos.org is populate the cache at cache.nixos.org.

You want to increase the likelihood that you are hitting this cache. For example, google-chrome takes hours to build.

What is a binary cache?

What is Hydra (Nix CI)?

What is Cachix?