I have been thinking for a few weeks about how sad it is that we’ve taken a distributed version control system like Git and forced it to be centralized in Nix. This is especially true with regards to Flake inputs.

If a forge like GitHub goes down then nix build will break, even though the same repository may be available elsewhere. While you can use the --override-input option to work around this, it gets quite messy to replace all of your repositories this way.

A better solution would be to use something like Radicle to fetch the repository from the first available peer. Git can already using a helper program to fetch remote repositories. However, Nix doesn’t support this and a 2024 PR to add support has stalled.

Perhaps the community has a solution to this problem.