e11sync

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | LICENSE

e11sync-backend.nix (2020B) - Raw


      1 {
      2   lib,
      3   stdenvNoCC,
      4   runCommand,
      5   makeWrapper,
      6   python3,
      7   libmaxminddb,
      8   uwsgi,
      9   backendPort ? 8002,
     10   databasePath ? null,
     11   geoip-mmdb,
     12   e11sync-djangostatic,
     13 }: let
     14   uwsgi-python = uwsgi.override {plugins = ["python3"];};
     15   pythonEnv = python3.withPackages (ps: [ps.django ps.geoip2]);
     16 in
     17   stdenvNoCC.mkDerivation {
     18     name = "e11sync-backend";
     19     propagatedBuildInputs = [
     20       pythonEnv
     21       libmaxminddb
     22     ];
     23     nativeBuildInputs = [makeWrapper];
     24     src = ../app;
     25     patchPhase = ''patchShebangs --build manage.py'';
     26     buildPhase = ''mkdir -p $out'';
     27     installPhase = ''
     28       cp -r . $out/app
     29       makeWrapper $out/app/manage.py $out/bin/e11sync \
     30         ${lib.optionalString (databasePath != null) ''
     31         --set E11SYNC_DATABASE_PATH "${databasePath}" \
     32       ''} \
     33         --set GEOIP_PATH "${geoip-mmdb}"
     34 
     35       makeWrapper ${uwsgi-python}/bin/uwsgi $out/bin/e11sync-backend \
     36         --chdir $out/app \
     37         --set-default E11SYNC_HTTP_PORT ${toString backendPort} \
     38         --add-flags "--need-plugin ${uwsgi-python}/lib/uwsgi/python3_plugin.so" \
     39         --add-flags "--python-path ${pythonEnv}/lib/${pythonEnv.libPrefix}/site-packages" \
     40         --add-flags "--http-socket 127.0.0.1:${toString backendPort}" \
     41         --add-flags "--wsgi-file e11sync/wsgi.py" \
     42         --add-flags "--master --need-app" \
     43         ${lib.optionalString (databasePath != null) ''
     44         --set E11SYNC_DATABASE_PATH "${databasePath}" \
     45       ''} \
     46         --set E11SYNC_STATIC_ROOT "${e11sync-djangostatic.passthru.manifest}" \
     47         --set E11SYNC_DEBUG "" \
     48         --set GEOIP_PATH "${geoip-mmdb}" \
     49     '';
     50     passthru.tests.unit =
     51       runCommand "e11sync-test" {
     52         srcs = ../app;
     53         buildInputs = [pythonEnv];
     54       } ''
     55         unpackPhase
     56         patchShebangs --build app/manage.py
     57         export GEOIP_PATH="${geoip-mmdb}"
     58         export E11SYNC_STATIC_ROOT="${e11sync-djangostatic.passthru.manifest}"
     59         app/manage.py test app
     60         mkdir -p $out
     61       '';
     62   }