380a7cb8

Release to Hackage from CI, and update the flake inputs

The same CD setup `autodocodec` and `sydtest` use, without their comment blocks. Plus `nix flake update`, with `nix flake check` passing on the result.

## The CD step

`nix-ci.nix` with a `deploy.release-to-hackage` step, master only, `HACKAGE_API_KEY` from the repository's Secrets overview on NixCI. The script uploads exactly those packages whose version is not on Hackage yet, so a push that bumps no version releases nothing.

**One thing the stripped comments were warning about.** Those comments note that this file is the *whole* configuration — NixCI falls back to the flake's `nix-ci` output only when no such file exists. `ical` had `auto-update` (base `development`) and `cachix` in that output, so both had to move into the file or they would have been dropped with no error saying so. They are in there.

I removed the now-unreachable `nix-ci` output from `flake.nix` rather than leaving a second place to look. That also removes the `warning: unknown flake output 'nix-ci'` that every `nix flake check` printed.

## What gets published — the bit worth reviewing

Only **`ical`** and **`ical-recurrence`**. The two `-gen` packages and `ical-interop-test` are excluded.

Only `ical` is on Hackage today, at 0.0.1. The other four are absent, and three sit at version `0.0.0.0`, so releasing the whole package set would have published `ical-gen-0.0.0.0`, `ical-recurrence-gen-0.0.0.0` and `ical-interop-test-0.0.0.0` on the next push to master. A Hackage upload cannot be taken back; adding a package here later is one line.

Verified against the built script rather than the expression — it references exactly:

```
ical-0.3.0.0
ical-recurrence-0.2.0.0
```

If you do want the gen packages published, they need real versions first. Worth noting that smos depends on `ical-gen`, but via a flake input, so nothing is broken by leaving it off Hackage.

## Consequence of merging this

The first push to master after this lands will publish **`ical` 0.3.0.0** and **`ical-recurrence` 0.2.0.0**, since those versions are already bumped and changelogged on master and neither is on Hackage. That is presumably the intent, but it means merging this *is* cutting the release.

## `nix flake update`

Everything moved. Notably nixpkgs 2026-05-31 → 2026-08-25 and nixpkgs-25_11 → 2026-05-26 → 2026-06-30. `release-to-hackage` added at 2026-08-11.

`nix flake check` passes on the result: all eight checks build against the newer package sets with no change to any Haskell code, which is the useful part of the report given a nixpkgs bump of that size.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 1s 1s 1s 0s
Eval 1s 10s 10s 11s 0s
Build 11s 2m37s 2m27s 2m39s 7s
Suite 0s 2m49s 2m39s 2m39s 7s

Timeline

0s20s40s1m1m20s1m40s2m2m20s