selector4nix is a Nix substituter proxy with parallel cache queries and latency-aware selection. The last time I shared this project in this forum was about 3 months ago. From then on, selector4nix has gained more features, improvements and optimizations.
The notable features included in these new versions are:
- Private substituter support: Accessing private substituter servers is possible with additional credentials. AFAIK it worked well with Cachix, Garnix and attic.
- Persistent caching: NAR info and other queried data can be persisted to disk cache and then be retrieved again after the process restarts.
- Dashboard: It started from a minimal static page, and gradually evolved into its current form. Now it has several pages and shows each substituter’s availability, statistics of the server’s cache and storage, realtime information of NARs being trasferred currently, and so on.
- Chunked NAR streaming: Since selector4nix intercepts NAR requests, it can any optimization for its client transparently. the proxy tries to request multiple NAR chunks from the selected upstream substituter concurrently, and forwards chunks to clients. This feature helps improve the throughput on high-latency network links, which is especially useful for myself.
- etc.
Compared to its alternative, ncro, selector4nix is not that popular, but I still gained supports from some of my friends and users of this project. I’m very appreciated of your acknowledgement. This is my first project that managed to address other people’s real problems and made a difference, and I also learnt a lot when polishing it. I’ll continue to work on selector4nix and enjoy getting involved in the Nix community.
Please refer to the following links for more information:
- Homepage: https://github.com/StarryReverie/selector4nix/
- v0.9.0 release: https://github.com/StarryReverie/selector4nix/releases/tag/v0.9.0
- v0.9.0 changelog: https://github.com/StarryReverie/selector4nix/blob/8c28a663078b97eaa6c125f2c7db0d9e75b22311/CHANGELOG.md
Hope you enjoy it ![]()