flake: Add a 'production' package The production package will be what actually goes live on https://aasg.name. At the moment, the two differences from the default package are the inclusion of Matrix-related well-known links (which only make sense on the live domain) and the Brotli compression of HTML/CSS/JS files. No more changes should happen aside from more well-known links.
haunt: Link to source commit in the site footer
flake: Provide an empty install phase If `dontInstall` is enabled, the install hooks are not run. We'll be needing those elsewhere so provide an install phase that just run the hooks.
flake: Run build phase hooks Despite [RFC 32] being accepted, it doesn't seem to have been implemented yet, so we need to call the pre- and post-build hooks manually. [RFC 32]: https://github.com/NixOS/rfcs/blob/master/rfcs/0032-run-phase-changes-for-better-nix-shell-use.md
flake: Make output deterministic Patch timestamps to align with the timestamp of the latest commit, and fix a namespace-like URL to not include a random UUID. I considered using libfaketime but it made reuse hang, and with just two timestamps it may have been too heavy-handed anyway. self.rev is not available when the Git worktree is dirty, but that should not be a problem for published builds.
nix: Add guile-json to buildInputs That GUILE_LOAD_PATH felt odd ever since I saw it again recently. guile-json not being in a build input explains why we needed it.