{ pkgs, src, ... }: let 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 = pkgs.poetry2nix.mkPoetryApplication rec { projectDir = fixedSrc; python = pkgs.python310; overrides = pkgs.poetry2nix.overrides.withDefaults (self: super: { click-didyoumean = super.click-didyoumean.overridePythonAttrs (old: { nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ self.poetry ]; }); xmlsec = super.xmlsec.overridePythonAttrs (old: { nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ self.pkgconfig pkgs.pkg-config ]; buildInputs = (old.buildInputs or []) ++ [ pkgs.xmlsec pkgs.libxslt pkgs.libxml2 pkgs.libtool ]; }); hatch-vcs = (super.hatch-vcs or (self.buildPythonPackage rec { pname = "hatch-vcs"; version = "0.2.0"; format = "pyproject"; nativeBuildInputs = with self; [ hatchling ]; propagatedBuildInputs = with self; [ hatchling setuptools-scm ]; checkInputs = with self; [ pkgs.git pytestCheckHook ]; src = self.fetchPypi { pname = "hatch_vcs"; inherit version; sha256 = "1zxb12lrrl1n7ijcxl8mvv94lnhn6b52c1jx6jq9pv2fncrxf4wr"; }; })); watchfiles = self.callPackage "${pkgs.path}/pkgs/development/python-modules/watchfiles/default.nix" {}; uvicorn = (self.callPackage "${pkgs.path}/pkgs/development/python-modules/uvicorn/default.nix" {}).overridePythonAttrs (old: { propagatedBuildInputs = old.propagatedBuildInputs ++ old.passthru.optional-dependencies.standard; }); inherit (pkgs.python310.pkgs) ua-parser; }); buildInputs = [ pkgs.bash ]; postInstall = '' mkdir -p $out/share/authentik touch $out/share/authentik/__init__.py cp -r ${src}/xml $out/share/authentik/xml cp -r ${src}/lifecycle $out/share/authentik/lifecycle wrapProgram $out/bin/ak \ --prefix PYTHONPATH ':' "$out/share/authentik" ''; }; in app.dependencyEnv