Call by hash - NixOS Hashes in URLs

I just wrote a blog post about what happens when you make URLs immutable: mapping from a hash to a NixOS configuration of that hash. Turns out “nice” deployments (fast, zero-downtime, atomic) become much easier, without the complexity of something like Kubernetes. Blog post here, feedback appreciated!

5 Likes

That’s really cool!

I was having similar crazy thoughts:
If file paths are pointers, so are urls.
Why not push nix to start taming them!

PATH variable = dns suffix list (avoid)
file path = dns A record
inode number = ip address
symlink = dns CNAME record
signature = cert/pub key

centralized version of zooko triangle:
(half-baked thoughts, please be lenient)

  • human friendly name (dns records)
    friendly name CNAME record to hash of service A record
  • centralized number (ip addresses)
    with ipv6, there should be enough bits to truncate hash of service to an iid…
    (got to be aware of birthday problem though…)
  • secure identifier (public keys)
    still have to trust public keys, but signature games ease the burden.

I can’t wait to read about how persistence gets handled!

1 Like

This discussion went even further at least as early as 2021: Announcing Nomia, a general resource manager inspired by Nix

To summarise: What if any operating system resource was immutably addressable?

I very much subscribe to this view, and would go even further: What if any computation state was immutably addressable?

Racket – one of the most alive and relevant Lisps – pretty much goes in this direction with its first-class treatment of continuations.

5 Likes