822f4722

Your first flake

Adds a `flake.nix` so the project can be built, tested and checked with Nix (and run on NixCI).
The **entire test suite runs inside `nix flake check`** — pure builds for everything offline,
and the pure-impure trick for the few tests that need real internet.

It provides:

* `packages.default` — builds the dspy wheel (`python -m build`).
* `packages.test-env` — the full test virtualenv, resolved from `uv.lock` via uv2nix.
* `devShells.default` — python + uv + ruff + pre-commit development environment.
* `checks`:
  * `lint` — ruff gate mirroring the existing CI.
  * `pytest` — the offline test suite (984 tests), a fully reproducible pure build.
  * `pytestNetwork` — the ~9 internet-dependent tests, run via the pure-impure trick
    (a fixed-output derivation, which Nix grants network access), so they execute inside
    `nix flake check` too. Duplicated, not depended upon, from NorfairKing/pure-impure-nix.
  * the wheel, the devShell and the test-env.

Passing NixCI: https://staging.nix-ci.com/gh:NorfairKing:dspy/your-first-flake/337102c80d8f5839bc6ebad3bf8d053f5b9e7139

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 7s 7s 8s 0s
Eval 7s 17s 17s 25s 0s
Build 16s 23s 8s 24s 0s
Suite 0s 49s 25s 25s 0s

Timeline

0s10s20s