This completes https://github.com/NixOS/nixpkgs/issues/425583.
Rather than putting `nixfmt` everywhere, I opted to teach people to use
`treefmt` instead. This is more correct, as we have formatting rules for
non-nix files, and also may invoke `nixfmt` with non-default options.
quicklisp does not support TLS (https://github.com/quicklisp/quicklisp-client/issues/167)
and therefore lists release with http in release.txt.
Since nixpkgs uses `fetchzip` we can change the source to be fetched
over HTTPS.
Quicklisp's October 2024 release had such a problem between the new packages qvm
and cl-quil. It caused an issue with the "nixpkgs-review" tool because the Nix
interpreter was stopping with an error due to too much recursion.
The previous approach of manually repeating a complex pattern inside Common Lisp
implementation package declarations was fragile and hard to change. After
reading python and lua modules code in Nixpkgs, I was able to come up with
something better.
The function `wrapLisp` doesn't need to be inside package declarations so all
the code for wrapping Lisps can be in `all-packages.nix`.
This works by wrapping the `override` function created from `mkDerivation` to
accept a new argument `packageOverrides`.
One problem with this is that `override.__functionArgs` disappears. But one can
look at the source code of a package to discover what can be overridden.