This modernizes the Nix files of this project. Nix Flakes are the
de-facto standard way in Nix to package projects and specify their
inputs. Inputs can be any Nix or non-Nix project.
Updating Nix dependencies now is as easy as `nix flake update` and
a corresponding commit.
As they are still not stabilized yet, you need the line
experimental-features = nix-command flakes
in /etc/nix/nix.conf to use the flake. By usage, I mean entering
the Nix development shell using `$ nix develop .` or if you want
to run `nix flake update`.
The package manager niv, we used to have, is basically dead.