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.