A networkis described by a file.Not defined by one … yet.

Why this is hard to say out loud

The hardest part of my work isn’t doing it. It’s describing it to someone who has never been shown that their computer is a decision rather than the weather.

Nearly everyone lives inside one ecosystem completely. The apps are the ones that came with it, the settings are the ones somebody chose, and the whole arrangement feels like a fact about the world. It isn’t. It’s a configuration, and configurations can be written down, read, argued with, and replaced.

So the argument has to be shown rather than made. What follows is the smallest version of it: one word, defined properly, and the three steps it implies.

What declarative actually means

0:00 / 0:00

Imperative is a list of things you did: installed this, edited that, ran a command you found online at two in the morning. It works right up until you need a second machine, or the same machine next year.

Declarative is the finished description. You don’t tell the machine how to get there; you state what should be true, and matching it is the machine’s problem. If the description and the machine disagree, the machine is wrong and gets corrected; never the other way around.

declaration
what should be true
evaluation
pure, pinned, sandboxed
the system
matched to the declaration

Five words, defined

The vocabulary is the barrier more often than the ideas are. These five carry most of the weight.

derivation A recipe: exact inputs, exact steps, one output. Not the result, the description that produces it.
store path Where a result lives, under a name derived from everything that made it. Different inputs, different path, no collisions.
closure A thing plus everything it needs, transitively. The honest measure of what you actually depend on.
flake A project with its inputs pinned in a lock file, so your build and mine agree.
generation A numbered previous state of the system. Rollback is choosing an older number.

What that actually builds

Once machines are text, they stop being separate projects. Below is the shape it takes: a server, a box full of disks, a desk, a laptop, and something that isn’t even the same operating system. They share one description and one private network.

Hover a node. The pale ring is what every machine has, identically. The short accented list is the only part that makes it that machine. Adding another node means writing that short list, not setting up a computer.

topology =||;
gateway
storage
desktop
laptop
compute
foreign
every node has these
base
users
shell
mesh
monitoring
one descriptionadds only
six machines · one private network

Things that exist because of this

Not a portfolio so much as evidence. Each of these came out of needing something to exist and finding it didn’t.

nixos-config Five hosts from one flake, laptop, homelab, two builders, a router. Readable on purpose; a config nobody can read is a longer install script.
flake-lens Diffs two lock files and says in plain sentences what changed in your closure. Written after explaining a lockfile diff out loud one time too many.
data work Warehouses and dashboards for freelance clients, rebuilt so every number traces back to a query you can read.
17 September 2026 · reader.level = "newbie"