meta/flake.nix
Coornhert a7e4a4bc16 feat: MVP index.json generator + CLI tool
- indexer.py: genereert index.json met metadata per regeling
- CLI: show, search, diff, log commando's met Rich formatting
- flake.nix: shellHook echo naar stderr (stdout schoon voor tools)

wetgit show BWBR0001840 --artikel 1  → toont artikel 1 Grondwet
wetgit search "godsdienst"           → vindt art. 1, 6, 23

Sluit #32, #33
2026-03-30 10:23:20 +02:00

103 lines
2.6 KiB
Nix

{
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
# 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
'';
};
});
}