cb8190b6

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

Add a Nix flake

Adds a flake.nix so the project can be built and checked with Nix (and
demoed on NixCI). It provides:

* packages.default: builds the dspy wheel (python -m build)
* devShells.default: python + uv + ruff + pre-commit dev environment
* checks: the package, the devShell, and a ruff lint gate mirroring CI

`nix flake check` builds every package and devShell.