etebase: make proper package...

and remove the ad-hoc python environment.
Also remove daphne and use uvicorn just as upstream does
This commit is contained in:
phaer 2024-03-01 22:55:27 +01:00
parent aa04a4d124
commit fa34964ef1
2 changed files with 17 additions and 23 deletions

View file

@ -5,9 +5,6 @@ with lib;
let
cfg = config.services.etebase-server;
pythonEnv = cfg.pythonPackage.withPackages (ps: with ps;
[ cfg.package daphne ]);
iniFmt = pkgs.formats.ini {};
configIni = iniFmt.generate "etebase-server.ini" cfg.settings;
@ -48,18 +45,11 @@ in
package = mkOption {
type = types.package;
default = cfg.pythonPackage.pkgs.etebase-server;
defaultText = literalExpression "pkgs.etebase-server";
default = pkgs.python3.pkgs.etebase-server;
defaultText = literalExpression "pkgs.python3.pkgs.etebase-server";
description = lib.mdDoc "etebase-server package to use.";
};
pythonPackage = mkOption {
type = types.package;
default = pkgs.python3;
defaultText = literalExpression "pkgs.python3";
description = lib.mdDoc "python interpreter to run etebase-server with.";
};
dataDir = mkOption {
type = types.str;
default = "/var/lib/etebase-server";
@ -178,7 +168,7 @@ in
(runCommand "etebase-server" {
nativeBuildInputs = [ makeWrapper ];
} ''
makeWrapper ${pythonEnv}/bin/etebase-server \
makeWrapper ${cfg.package}/bin/etebase-server \
$out/bin/etebase-server \
--chdir ${escapeShellArg cfg.dataDir} \
--prefix ETEBASE_EASY_CONFIG_PATH : "${configIni}"
@ -192,8 +182,8 @@ in
systemd.services.etebase-server = {
description = "An Etebase (EteSync 2.0) server";
after = [ "network.target" "systemd-tmpfiles-setup.service" ];
path = [ cfg.package ];
wantedBy = [ "multi-user.target" ];
path = [ pythonEnv ];
serviceConfig = {
User = cfg.user;
Restart = "always";
@ -201,6 +191,7 @@ in
};
environment = {
ETEBASE_EASY_CONFIG_PATH = configIni;
PYTHONPATH = cfg.package.pythonPath;
};
preStart = ''
# Auto-migrate on first run or if the package has changed
@ -213,12 +204,13 @@ in
'';
script =
let
python = cfg.package.python;
networking = if cfg.unixSocket != null
then "-u ${cfg.unixSocket}"
else "-b 0.0.0.0 -p ${toString cfg.port}";
then "--uds ${cfg.unixSocket}"
else "--host 0.0.0.0 --port ${toString cfg.port}";
in ''
cd "${pythonEnv}/lib/etebase-server";
daphne ${networking} \
${python.pkgs.uvicorn}/bin/uvicorn ${networking} \
--app-dir ${cfg.package}/${cfg.package.python.sitePackages} \
etebase_server.asgi:application
'';
};

View file

@ -17,7 +17,6 @@ in
python.pkgs.buildPythonPackage rec {
pname = "etebase-server";
version = "0.11.0";
format = "other";
src = fetchFromGitHub {
owner = "etesync";
@ -28,7 +27,8 @@ python.pkgs.buildPythonPackage rec {
patches = [ ./secret.patch ];
propagatedBuildInputs = [
doCheck = false;
propagatedBuildInputs = with python.pkgs; [
aiofiles
django_3
@ -47,15 +47,17 @@ python.pkgs.buildPythonPackage rec {
] ++ lib.optional withLdap python-ldap
++ lib.optional withPostgres psycopg2;
installPhase = ''
postInstall = ''
mkdir -p $out/bin $out/lib
cp -r . $out/lib/etebase-server
ln -s $out/lib/etebase-server/manage.py $out/bin/etebase-server
cp manage.py $out/bin/etebase-server
wrapProgram $out/bin/etebase-server --prefix PYTHONPATH : "$PYTHONPATH"
chmod +x $out/bin/etebase-server
'';
passthru.updateScript = nix-update-script {};
passthru.python = python;
# PYTHONPATH of all dependencies used by the package
passthru.pythonPath = python.pkgs.makePythonPath propagatedBuildInputs;
passthru.tests = {
nixosTest = nixosTests.etebase-server;
};