depot/nix/pkgs/authentik/server/default.nix

56 lines
1.7 KiB
Nix

{ pkgs, goserver, pythonapp, docs, webui, version, src, ... }:
pkgs.stdenv.mkDerivation {
pname = "authentik-server";
inherit version src;
dontBuild = true;
nativeBuildInputs = [ pkgs.makeWrapper ];
installPhase = ''
runHook preInstall
mkdir $out
mkdir $out/bin
ln -s ${pythonapp}/bin/ak $out/bin/ak
mkdir $out/share
mkdir $out/share/authentik
cp -R ${pythonapp}/share/authentik/* $out/share/authentik
chmod -R u+w $out/share/authentik
mkdir $out/share/authentik/web
ln -s ${webui}/dist $out/share/authentik/web/dist
ln -s ${webui}/authentik $out/share/authentik/web/authentik
mkdir $out/share/authentik/website
ln -s ${docs} $out/share/authentik/website/help
ln -s /etc/authentik/authentik.yml $out/share/local.env.yml
makeWrapper ${goserver}/bin/server $out/bin/authentik-server \
--chdir "$out/share/authentik" \
--prefix PATH : "${pythonapp}/bin" \
--prefix PYTHONPATH : "$out/share/authentik"
makeWrapper ${pythonapp}/bin/django-admin $out/bin/authentik-django-admin \
--set DJANGO_SETTINGS_MODULE authentik.root.settings \
--prefix PYTHONPATH : "$out/share/authentik"
cat <<EOF >$out/share/authentik/manage.py
#! ${pythonapp}/bin/python
import os, sys
if __name__ == '__main__':
args = list(sys.argv)
if 'runserver' in args:
args.append('--noreload')
os.execv("$out/bin/authentik-django-admin", args)
EOF
chmod +x $out/share/authentik/manage.py
makeWrapper ${pythonapp}/bin/celery $out/bin/authentik-celery \
--set DJANGO_SETTINGS_MODULE authentik.root.settings \
--prefix PYTHONPATH : "$out/share/authentik"
runHook postInstall
'';
}