Modularize our flake using flake-parts

TODO: Write this!

Things to highlight:

  • flake-parts can be used as lightweight forAllSystems alternative
  • allows us to split top-level flake.nix into small .nix files
  • allows us to define our own modules and use them (just like NixOS options)
  • nuts and bolts:
    • perSystem, and its args (self', etc.)
    • debug option and inspecting in repl