Create goal card and 4 prerequisite cards for building authentik from a custom Nix derivation instead of using pkgs.authentik from nixpkgs. This removes the dependency on the nixpkgs packaging timeline and gives full version control over authentik releases. Chain: mikado/authentik-source-build Leaf nodes: authentik-api-client-generation, authentik-python-backend-derivation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
| title | modified | status | tags | |||
|---|---|---|---|---|---|---|
| Build Authentik Python Backend | 2026-02-28 | active |
|
Build Authentik Python Backend
Build authentik-django — the Python/Django application that forms the core backend of authentik.
Context
This is the most complex component. The nixpkgs derivation uses python3.override with extensive packageOverrides to handle authentik's non-standard dependencies:
- 4 in-tree Python packages built from the monorepo:
ak-guardian,django-channels-postgres,django-dramatiq-postgres,django-postgres-cache - Forked
djangorestframeworkfromauthentik-community/django-rest-framework(specific commit) - Pinned
dramatiqat 1.17.1 (upstream uses newer versions that break authentik) - Django 5 forced via
django_5 - 60+ Python dependencies from nixpkgs
Post-install, the derivation patches hardcoded paths in settings.py, default.yml, email/utils.py, and files/backends/file.py to reference Nix store paths.
What to Do
- Create a Python package override set that builds the 4 in-tree packages from source
- Pin the forked
djangorestframeworkanddramatiqversions - Build
authentik-djangousinghatchlingas the build backend - Apply the 4
substituteInPlacepatches for Nix store path references - Copy lifecycle scripts,
manage.py, blueprints, and web assets into the output - Verify:
python -c "import authentik"succeeds
Key Details
- Build backend:
hatchling - Entry point:
manage.py(Django management commands) - Lifecycle scripts:
lifecycle/directory (used by Go server andakwrapper) - Blueprints:
blueprints/directory (YAML IaC definitions) - The output must include
web/assets (email templates reference them)
Related
- build-authentik-from-source — Parent goal
- authentik-go-server-derivation — Depends on this for lifecycle scripts and web assets