From fa34964ef195eb1ae99248e179fee3daae321f9b Mon Sep 17 00:00:00 2001 From: phaer Date: Fri, 1 Mar 2024 22:55:27 +0100 Subject: etebase: make proper package... and remove the ad-hoc python environment. Also remove daphne and use uvicorn just as upstream does --- nixos/modules/services/misc/etebase-server.nix | 28 +++++++++----------------- 1 file changed, 10 insertions(+), 18 deletions(-) (limited to 'nixos') diff --git a/nixos/modules/services/misc/etebase-server.nix b/nixos/modules/services/misc/etebase-server.nix index 1500b538754e..f5a5e8a780d4 100644 --- a/nixos/modules/services/misc/etebase-server.nix +++ b/nixos/modules/services/misc/etebase-server.nix @@ -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 ''; }; -- cgit 1.4.1