Unverified Commit f4f9f960 authored by Martin Weinelt's avatar Martin Weinelt
Browse files

nixos/pretalx: add plugins option

Allow loading pretalx plugins in a declarative manner. They are passed
into the package dependencies at build time, so that collectstatic and
other django maintenance functions account for them, since we cannot
regenerate assets at runtime anyway.
parent 110e635a
Loading
Loading
Loading
Loading
+27 −8
Original line number Diff line number Diff line
@@ -11,14 +11,19 @@ let

  configFile = format.generate "pretalx.cfg" cfg.settings;

  extras = cfg.package.optional-dependencies.redis
    ++ lib.optionals (cfg.settings.database.backend == "mysql") cfg.package.optional-dependencies.mysql
    ++ lib.optionals (cfg.settings.database.backend == "postgresql") cfg.package.optional-dependencies.postgres;
  finalPackage = cfg.package.override {
    inherit (cfg) plugins;
  };

  pythonEnv = cfg.package.python.buildEnv.override {
    extraLibs = [ (cfg.package.python.pkgs.toPythonModule cfg.package) ]
      ++ (with cfg.package.python.pkgs; [ gunicorn ]
      ++ lib.optional cfg.celery.enable celery) ++ extras;
  pythonEnv = finalPackage.python.buildEnv.override {
    extraLibs = with finalPackage.python.pkgs; [
      (toPythonModule finalPackage)
      gunicorn
    ]
    ++ finalPackage.optional-dependencies.redis
    ++ lib.optionals cfg.celery.enable [ celery ]
    ++ lib.optionals (cfg.settings.database.backend == "mysql") finalPackage.optional-dependencies.mysql
    ++ lib.optionals (cfg.settings.database.backend == "postgresql") finalPackage.optional-dependencies.postgres;
  };
in

@@ -44,6 +49,20 @@ in
      description = "User under which pretalx should run.";
    };

    plugins = lib.mkOption {
      type = with lib.types; listOf package;
      default = [];
      example = lib.literalExpression ''
        with config.services.pretalx.package.plugins; [
          pages
          youtube
        ];
      '';
      description = ''
        Pretalx plugins to install into the Python environment.
      '';
    };

    gunicorn.extraArgs = lib.mkOption {
      type = with lib.types; listOf str;
      default = [