Server-rendered HTML via Jinja2 templates in FastAPI: - Homepage: zoekbalk, statistieken, inhoudsopgave Grondwet - /grondwet: volledige tekst als leesbare pagina - /grondwet/samenvatting: AI-samenvatting (B1-niveau) - /zoeken: keyword (Meilisearch) + semantisch (Qdrant) - /historie: tijdlijn van versies - /diff: visuele vergelijking tussen twee versies - Sober, responsive CSS (overheidsstijl) - Disclaimer op elke pagina flake.nix: jinja2 + markdown packages toegevoegd Sluit #39
107 lines
2.8 KiB
Nix
107 lines
2.8 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
|
|
|
|
# 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
|
|
'';
|
|
};
|
|
});
|
|
}
|