Build Nix packages once and share them for good.

Get Started

Why?

If a project build takes 15 minutes, why build it three times and waste your users time? If you can just easily distribute the binaries?

  • You build your software project on your laptop during development.
  • Your Continuous Integration builds the project again to verify there are no mistakes.
  • Users of your project build it again to use or deploy it.

How?

Nix builds a package in isolation from your system. This ensures that build process is reproducible and doesn’t have undeclared dependencies, so if a package is built on one machine, it will build identically on another machine.

Nix also hashes the inputs before building a package. By querying Cachix with the hash, it's possible to download the binary identified by the hash as a replacement for the build process.

What?

Binary Cache as a Service - Cachix: allows you to create your own binary cache(s) within seconds after you've signed-in:

$ cachix create <name>

and be able to upload binaries to https://<name>.cachix.org with a simple command:

$ nix-build | cachix push <name>

While users of your cache can configure Nix without fiddling with config files:

$ cachix use <name>

Free for Open Source

Hook up your favourite Continuous Integration for public projects.

Secure

Signing key is never revealed to Cachix, as cli signs packages locally on your machine.

Fast & Robust

Built with Haskell and Elm, querying binary cache takes ~20 miliseconds.

Zero hassle

Setup and start a few commands away.

Roadmap

In no particular order:

Garbage collection

Since binary caches can grow, there should be a way to configure a garbage collection strategy.

See issue #20

Authenticated/private binary cache?

If you're interested in protected binary caches, leave your email:

Declarative interface

Currently cachix push, cachix use, etc are low-level imperative interface. In future it should be possible to declaratively configure your project what binary caches it uses.

See issue #14

Search over executables

It's worth exploring if indexing all files in binary cache is feasible with a search over executables provided (offline and online).

See issue #18

Documentation + HTTP API

Once API and implementation stabilize in next months, there should be a documentation about how Cachix works in details besides the current getting started page. Moreover, https://cachix.org/api/v1/ can be documented and published as stable.

See issue #19

FAQ

How does Cachix differ from https://cache.nixos.org?

The official nixpkgs binary cache at cache.nixos.org serves all built packages from nixpkgs github repository. While in most cases it's reasonable to upstream packages to nixpkgs, there are also many cases when that's not feasible and Cachix allows decentralized version management to be used while still having a binary cache.

Will Cachix forever be free?

Yes. In the future there might be some limits, but at this point there are none.

Why Nix?

Read further.

Made by

I've started using Nix in 2012 and after years of many contributions in free time, started using Nix exclusively in 2016 packaging up OpenStack and functional testing a cluster with scenarios.

In 2016 I've founded Enlambda consulting which helped many clients like Snabb and IOHK to adopt Nix as a way to solve interesting complex software distribution problems in our industry.

Domen Kožar

Creator