# Why does the NixOS infrastructure have to be hosted in a centralized way?

**URL:** https://discourse.nixos.org/t/why-does-the-nixos-infrastructure-have-to-be-hosted-in-a-centralized-way/46789
**Category:** Infrastructure
**Created:** [June 10, 2024, 4:51am UTC](https://discourse.nixos.org/t/why-does-the-nixos-infrastructure-have-to-be-hosted-in-a-centralized-way/46789 "2024-06-10T04:51:40Z")
**Posts on this page:** 1
**Showing post:** 32

<div class="post-metadata">

### Author: ![amjoseph](https://discourse.nixos.org/user_avatar/discourse.nixos.org/amjoseph/32/28378_2.png) [@amjoseph](https://discourse.nixos.org/u/amjoseph)
#### Post date: [August 6, 2024, 10:42am UTC](https://discourse.nixos.org/t/why-does-the-nixos-infrastructure-have-to-be-hosted-in-a-centralized-way/46789/32 "2024-08-06T10:42:41Z")

</div>

> [@waffle8946](#):
>
> > [@amjoseph](#):
> >
> > Nixworld needs to break its bandwidth addiction. That requires deep architectural changes which would be painful, but extremely beneficial in the long run.
> 
> Do you mean CA derivations, more efficient compression, or something else?

The moonshot is fixing the way we deal with shared libraries. We pay an immense disk-space and bandwidth cost every time we rebuild a library which is depended upon by other packages. It is an insane cost. No other distro (except Guix) pays this cost, and it’s getting increasingly impractical.

I’ve [said a bit more about how to fix this elsewhere](https://discourse.nixos.org/t/monorepos-dont-map-to-our-social-structure/44162/5) but it’s still in the oven and not done cooking yet.

_So long as its symbol table doesn’t change,_ modifying `glibc` shouldn’t trigger rebuilds of things downstream of it. It also shouldn’t change the contents of packages downstream of it, except for a tiny intermediate “indirection table”. The only thing that should change in the downstream outpaths is a pointer to that indirection table.

This goes way beyond CA derivations (but works best in combination with them) and better compression. It’s not the same thing as `pkgs.replaceDependency` but can be used instead of it if the dependency’s symbol table hasn’t changed.

---

_[View the full topic](https://discourse.nixos.org/t/why-does-the-nixos-infrastructure-have-to-be-hosted-in-a-centralized-way/46789)._
