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.