tvl-depot/blog/content/english/lets-learn-nix-caching.md
William Carroll 79b5fce68a Scatter blog post ideas for "Let's Learn Nix"
I may not use any of these. I'm just scrawling notes as blog posts to see if
anything sticks.
2020-03-17 22:42:22 +00: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?