snix/web/content/blog/2025-03-21-overlay-store/index.md
Vova Kryachko 57033490de feat(blog): Add nix-deamon blog and guide.
Change-Id: I46b8632ac2bfa43ccf95bd63d37e08a8f6b0869e
Reviewed-on: https://cl.snix.dev/c/snix/+/30244
Autosubmit: Vova Kryachko <v.kryachko@gmail.com>
Tested-by: besadii
Reviewed-by: Florian Klink <flokli@flokli.de>
2025-03-23 00:53:00 +00:00

2.6 KiB

title description date lastmod draft weight categories tags contributors pinned homepage
Using Snix as Lower Nix Overlay Store Using Snix as Lower Nix Store 2025-03-21T22:40:33+00:00 2025-03-21T22:40:33+00:00 false 51
false false

Background

About a year ago, nix introduced a new experimental store type: Local Overlay Store. This store allows having multiple physical stores acting as a single logical store.

With this approach, stores are layered on top of each other with all but the top-most layer being writable, the others are read-only. The feature is described in the Upstream Nix Documentation. Work is ongoing to bring the feature to Lix aswell.

The main use-case is for it is having a large nix store mounted onto a machine as read-only and configure nix to use data stored in it to avoid rebuilding/substituting from cache.nixos.org.

Due to implementation details of this feature, the lower layer(s) can not only be a location on the file system but also have another nix-daemon back the lower layer(s).

Meet the new snix nix-daemon

Implementing nix-daemon protocol is a lot of effort, due to being entirely custom and undocumented. On the other hand, mounting a large nix store is a great fit for snix as our content-addressed store is much more space efficient than conventional filesystem storage. A great example of this can be found here.

What's interesting about Local Overlay Store, is that it uses only a small subset of operations when talking to the nix-daemon. And this seemed like a good opportunity to make using nix backed by our castore more seamless.

So we are happy to announce that as of today, snix has implemented all of the operations required to operate as a lower layer in nix's overlay store.

Check out our [Guide]({{< ref "/docs/guides/local-overlay" >}}) on how to set it up.

Please test it out, let us know what you think and report bugs.

What's next for Local Overlay Store

We have plans expand our nix-daemon to support non-readonly mode and have all possible substitutions go into your local castore and only use the upper nix store for local builds.

We also want to make snix nix-daemon easier to use without having to run multiple snix components.

Stay tuned.