aa760bc7

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

The build, before there is anything to build

The flake, the dev shell, and the checks that will hold every rule that comes
after: the warnings this repository is held to, hlint over the whole tree with
partial functions banned, weeder over the package set, and the hooks that keep
the cabal files and the Nix expressions in step with package.yaml.

A library with one function that prints that it has no rules, so that none of
those checks is vacuous. Nothing is enforced yet, and nothing here decides
anything about Haskell.

The warnings are in package.yaml rather than in the overlay, so that a cabal
build in the shell says what a Nix build would; the overlay adds -Werror on
top, which makes the difference between a warning and a failure a property of
how it is built rather than of what it is. -Wunused-packages and weeder are in
that set on purpose: they are what will keep each later PR to the machinery its
rule actually needs.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 1s 1s 1s 0s
Eval 2s 9s 9s 11s 0s
Build 10s 5s 7s 18s 1s
Suite 0s 16s 18s 18s 2s

Timeline

0s10s