{ depot, src, pkgs, lib, ... }: let inherit (pkgs) poetry2nix; pyproject = pkgs.runCommand "authentik-pyproject" { src = "${src}/pyproject.toml"; } '' sed 's/extras = \["standard"\],//' $src > $out ''; poetrylock = pkgs.runCommand "authentik-poetrylock" { src = "${src}/poetry.lock"; } '' sed -e 's/, markers = "extra == \\\"standard\\\""//' \ -e 's/and extra == \\\"standard\\\"//' \ $src > $out ''; fixedSrc = pkgs.runCommand "authentik-src" { inherit src; } '' cp -R $src $out chmod -R u+w $out cp ${pyproject} $out/pyproject.toml cp ${poetrylock} $out/poetry.lock ''; app = poetry2nix.mkPoetryApplication rec { projectDir = fixedSrc; python = pkgs.python311; overrides = let assertVersion = pkg: wantVersion: lib.assertMsg (pkg.version == wantVersion) "${pkg.pname} (${pkg.version}) is different to what I expected (${wantVersion}); maybe remove the override?"; in poetry2nix.overrides.withDefaults (self: super: { cython = super.cython.overridePythonAttrs (oldAttrs: rec { version = "0.29.33"; src = self.fetchPypi { pname = "Cython"; inherit version; sha256 = "0si8f96kyk7ljrmjrffsjm4i8n5fs7q29nlmldjfjb2d9967ch2h"; }; patches = [ ./cython-trashcan.patch ./cython-disable-trashcan.patch ]; }); dumb-init = super.dumb-init.overridePythonAttrs (old: { nativeBuildInputs = old.nativeBuildInputs ++ [ self.setuptools ]; }); click-didyoumean = super.click-didyoumean.overridePythonAttrs (old: { nativeBuildInputs = old.nativeBuildInputs ++ [ self.poetry ]; }); bump2version = super.bump2version.overridePythonAttrs (old: { nativeBuildInputs = old.nativeBuildInputs ++ [ self.setuptools ]; }); opencontainers = super.opencontainers.overridePythonAttrs (old: { nativeBuildInputs = old.nativeBuildInputs ++ [ self.setuptools self.pytest-runner ]; }); xmlsec = super.xmlsec.overridePythonAttrs (old: { nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ self.pkgconfig ]; buildInputs = (old.buildInputs or []) ++ [ pkgs.xmlsec pkgs.libxslt pkgs.libxml2 pkgs.libtool ]; }); mistune = super.mistune.overridePythonAttrs (old: rec { version = "0.8.4"; src = self.fetchPypi { inherit (old) pname; inherit version; sha256 = "59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"; }; }); urllib3-secure-extra = super.urllib3-secure-extra.overridePythonAttrs (old: { nativeBuildInputs = old.nativeBuildInputs ++ [ self.flit-core ]; }); watchfiles = self.callPackage ../../../../third_party/nixpkgs/pkgs/development/python-modules/watchfiles/default.nix { CoreServices = null; }; kombu = assert assertVersion super.kombu "5.2.4"; super.kombu.overridePythonAttrs (old: { buildInputs = (old.buildInputs or []) ++ [ self.setuptools ]; postPatch = '' ${old.postPatch or ""} substituteInPlace requirements/test.txt --replace "pytz>dev" "pytz" ''; }); isort = assert assertVersion super.isort "5.10.1"; super.isort.overridePythonAttrs (old: { postPatch = '' ${old.postPatch or ""} substituteInPlace pyproject.toml --replace "pip-shims<=0.3.4" "pip-shims" ''; }); asyncio = null; pyrad = assert assertVersion super.pyrad "2.4"; super.pyrad.overridePythonAttrs (old: { buildInputs = (old.buildInputs or []) ++ [ self.poetry ]; }); pydantic-scim = assert assertVersion super.pydantic-scim "0.0.7"; super.pydantic-scim.overridePythonAttrs (old: { buildInputs = (old.buildInputs or []) ++ [ self.setuptools self.setuptools-scm ]; }); sqlparse = assert assertVersion super.sqlparse "0.4.4"; super.sqlparse.overridePythonAttrs (old: { buildInputs = (old.buildInputs or []) ++ [ self.flit-core ]; }); ruff = null; pytest-github-actions-annotate-failures = null; drf-jsonschema-serializer = assert assertVersion super.drf-jsonschema-serializer "1.0.0"; super.drf-jsonschema-serializer.overridePythonAttrs (old: { buildInputs = (old.buildInputs or []) ++ [ self.setuptools ]; }); django-otp = assert assertVersion super.django-otp "1.2.0"; super.django-otp.overridePythonAttrs (old: { buildInputs = (old.buildInputs or []) ++ [ self.hatchling ]; }); }); buildInputs = [ pkgs.bash ]; postInstall = '' mkdir -p $out/share/authentik touch $out/share/authentik/__init__.py cp -r ${src}/schemas $out/share/authentik/schemas cp -r ${src}/lifecycle $out/share/authentik/lifecycle wrapProgram $out/bin/ak \ --prefix PYTHONPATH ':' "$out/share/authentik" ''; }; in app.dependencyEnv