Free for Open Source
Hook up your favourite Continuous Integration for public projects.
If a project build takes 15 minutes, why build it three times and waste your users time? With Cachix you can just easily distribute the binaries.
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.
Binary Cache as a Service - Cachix: allows you to create your own binary caches 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> Hook up your favourite Continuous Integration for public projects.
Signing key is never revealed to Cachix, as cli signs packages locally on your machine.
Since binary caches can grow, there should be a way to configure a garbage collection strategy.
See issue #20
Currently cachix push, cachix use, etc are a low-level imperative interface. In the future it should be possible to declaratively configure in your project what binary caches it uses.
See issue #14
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
Once API and implementation stabilize in next months, there should be 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
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. Cachix allows decentralized version management while still benefiting a binary cache.
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.