Recently Patrick Collison, CEO of Stripe, tweeted:
Can you sympathize? As programming has evolved, managing packages, libraries, and dependencies has become a constant source of wasted time and smashed keyboards for developers everywhere. The problem is compounded when managing multiple development, testing, and production environments and asymptotically complex across a large engineering team.
A Gemfile, package.json, or requirements.txt can make sure you get the correct versions of ruby gems or node packages, but what about gems with native extensions or other requirements on your local machine? The state of the art for most development teams is an elaborate README that inevitably fails to specify some mission critical local dependency. What Ruby developer hasn’t lost an entire day trying to get the exact right build of nokogiri working on a project?
Enter Nix, the modern reproducible package manager. Nix manages this complexity by explicitly defining the entire configuration in a way that is exactly reproducible, easy to rollback, and precisely shareable across teams and development environments. With Nix the entire build process for all the tools needed to run a project, is encapsulated in a single command.
Nix—and the associated Linux distribution NixOS—is an open source project gaining popularity in the last few years with some obvious upsides and strong traction among the Haskell/Elm community, but it currently has some downsides. Namely, it’s hard to use and lacks some of the performance bells and whistles that are table stakes with other package managers.
Hence our investment Domen Kožar and his company Cachix. Domen is a long time community-builder and open source contributor in this space and launched a dedicated Nix consulting practice back in 2016. He’s on a mission to make Nix more accessible to developers and engineering teams around the world.
Cachix is free for open source and a superpower for engineering teams. With Nix + Cachix you can create a hash of your exact build, upload it to Cachix, and any one on your team from anywhere in the world can download the exact binary and get to work.
As with all package managers, the source code can be slow to build, so rebuilding binaries over and over is a time-wasting headache. Cachix is a binary cache for your Nix builds that developers and their teams can upload and query, reducing that wasted time by ~90%. The Nix community maintains an extensive cache of package binaries to keep your installs fast. However, as soon as you start using Nix for private projects, there aren’t many great options for how to cache your builds.
Enter Cachix, a caching system built specifically for development teams using Nix.
PS to the open source community – Are we a bunch of evil VCs that will force Cachix to either 1,000x or shut down leaving your development workflow dependent on unsupported projects? Absolutely not! If you’re not already familiar with Earnest Capital, we do “funding for bootstrappers” and invest in founders building calm, profitable, sustainable businesses. We’re in this together for the long haul.