{ description = "WetGit - Nederlandse wetgeving als code"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; pythonEnv = pkgs.python313.withPackages (ps: with ps; [ # Conversie-pipeline lxml # BWB XML-parsing met XPath/XSLT pygit2 # Git-operaties via libgit2 pyyaml # YAML frontmatter generatie python-frontmatter # Markdown + YAML frontmatter parsing # API-laag fastapi uvicorn # ASGI server httpx # Async HTTP client (SRU-API, EUR-Lex) pydantic # Data validatie # Achtergrondtaken celery redis # Python Redis client # CLI-tool click rich # Terminal formatting # Webinterface jinja2 # HTML templates markdown # Markdown → HTML rendering # Testing pytest pytest-cov pytest-asyncio # Development tools black ruff mypy pip # Typing stubs types-requests types-pyyaml ]); in { devShells.default = pkgs.mkShell { name = "wetgit"; buildInputs = with pkgs; [ # Python environment (alle packages via nix, geen venv nodig) pythonEnv # Dependency management (voor PyPI-only packages) uv # Ansible (infrastructuur provisioning Hetzner) ansible ansible-lint # Hetzner Cloud CLI hcloud # Redis server (lokale development) redis # Git & tools git jq yq-go curl # Native dependencies voor pygit2 libgit2 ]; shellHook = '' # PYTHONPATH zodat 'import wetgit' werkt vanuit src/ export PYTHONPATH="$PWD/src''${PYTHONPATH:+:$PYTHONPATH}" # .env laden (API keys, Hetzner token) if [ -f .env ]; then set -a source .env set +a fi # Deactiveer eventuele oude venv die in de weg zit if [ -n "$VIRTUAL_ENV" ]; then deactivate 2>/dev/null || true fi # Info naar stderr zodat stdout schoon blijft voor tools echo "WetGit devshell | Python $(python --version 2>&1 | cut -d' ' -f2)" >&2 ''; }; }); }