back
11 comments
Hey folks,

Cachix founder here. Here are a few links for getting started:

- https://nix.dev Nix tutorials

- https://devenv.sh Fast, Declarative, Reproducible, and Composable Developer Environments

Let me know if you have any questions. Domen

Domen, love the work you're doing.

You're more than welcome to share your wisdom about nix and everything related to it at our meetup.

Great news!

> Starting with Cachix v1.3, we’re enabling multipart uploads directly to storage.

I would be interested to hear more about the design of the new system.

E.g. does it make use of Cloudflare R2 for storage? How is authentication handled?

Would be great to hear more, if you can share!

yeah. sharing some design will give more trust to enterprise people. at least they will not suggest disk clones of nix store as solution.
Does anyone have some material recommendation about using nix for building binary releases of packages / libraries?

We have a Rust library that has bindings for many languages, most of which call the lib trough FFI. Is is worth investing time to set up flakes / nix builds that would be able to produce Java, dotnet, php packages for different platforms?

Also, does there exists a opensource plan for cachix?

I think for the goal of "produce Java, dotnet, php packages (with a Rust dependency) for different platforms", this as such is something Nix isn't geared towards.

Nix essentially relies on all its packages (and their linked dependencies) ending up under /nix/store. -- I'm not sure how easy it is to then take native shared libraries from /nix/store, and then distribute these to systems which don't have /nix/store.

Whereas, say, applications could be bundled using nix bundle. https://nixos.org/manual/nix/unstable/command-ref/new-cli/ni...

That said, I think Nix could still otherwise make a useful addition to the project. Something like https://devenv.sh/ would make setting up a development environment (especially for multiple languages) much easier.

I mean I think part of the difficulty with understanding/using Nix is that you can do anything with it.

You could set up a nix shell with all the dependencies you need to build the libraries, then build them "outside" of nix with something like `nix-shell --run`. You'd then at least have a reproducible environment for running builds.

You could alternatively build out libraries to a /nix/store with a derivation and then use nix's own tooling to ensure that the outputted files had no runtime dependencies on other nix dependencies. From there you could freely copy them from the store.

In both situation I think you could take advantage of Nix's various cross-compilation support.

If you do go this route, this blog post might be useful: https://xeiaso.net/blog/how-i-start-nix-2020-03-08

I found it yesterday (via another HN post), which shows the steps needed for exactly your use case.

The more complex your build requirements are, the more it may be worthy to switch to Nix, in my opinion. Managing that many languages might be reason enough to consider it.
> Does anyone have some material recommendation about using nix for building binary releases of packages / libraries?

Here's a very easy guide using Github actions:

https://nix.dev/tutorials/continuous-integration-github-acti...

See their other tutorials:

https://nix.dev/tutorials/#

cachix is a fantastic value add to nix CI flows, it made it incredibly easy to add cached artifacts for a cross compile setup I had going which required a custom toolchain with musl build.

It was super easy, and super fast. Well worth the $