Unverified Commit 10955966 authored by Martin Weinelt's avatar Martin Weinelt Committed by GitHub
Browse files

Merge pull request #311916 from wegank/pretalx-plugins-init

pretalx: add a few plugins
parents 929c7a68 29fd61c7
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 = [
+4 −1
Original line number Diff line number Diff line
@@ -5,13 +5,16 @@
  meta.maintainers = lib.teams.c3d2.members;

  nodes = {
    pretalx = {
    pretalx = { config, ... }: {
      networking.extraHosts = ''
        127.0.0.1 talks.local
      '';

      services.pretalx = {
        enable = true;
        plugins = with config.services.pretalx.package.plugins; [
          pages
        ];
        nginx.domain = "talks.local";
        settings = {
          site.url = "http://talks.local";
+8 −1
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
, gettext
, python3
, fetchFromGitHub
, plugins ? [ ]
, nixosTests
}:

@@ -132,7 +133,7 @@ python.pkgs.buildPythonApplication rec {
    vobject
    whitenoise
    zxcvbn
  ] ++ beautifulsoup4.optional-dependencies.lxml;
  ] ++ beautifulsoup4.optional-dependencies.lxml ++ plugins;

  passthru.optional-dependencies = {
    mysql = with python.pkgs; [
@@ -210,6 +211,12 @@ python.pkgs.buildPythonApplication rec {
    tests = {
      inherit (nixosTests) pretalx;
    };
    plugins = lib.recurseIntoAttrs (
      lib.packagesFromDirectoryRecursive {
        inherit (python.pkgs) callPackage;
        directory = ./plugins;
      }
    );
  };

  inherit meta;
+30 −0
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  fetchFromGitHub,
  setuptools,
}:

buildPythonPackage rec {
  pname = "pretalx-downstream";
  version = "1.2.0";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "pretalx";
    repo = "pretalx-downstream";
    rev = "v${version}";
    hash = "sha256-MzoK/tzf6ajZ/THIXyad/tfb3lsQD9k9J6aBfoP9ONo=";
  };

  build-system = [ setuptools ];

  pythonImportsCheck = [ "pretalx_downstream" ];

  meta = {
    description = "Use pretalx passively by importing another event's schedule";
    homepage = "https://github.com/pretalx/pretalx-downstream";
    license = lib.licenses.asl20;
    maintainers = with lib.maintainers; [ wegank ];
  };
}
+30 −0
Original line number Diff line number Diff line
{
  lib,
  buildPythonPackage,
  fetchFromGitHub,
  setuptools,
}:

buildPythonPackage rec {
  pname = "pretalx-media-ccc-de";
  version = "1.2.1";
  pyproject = true;

  src = fetchFromGitHub {
    owner = "pretalx";
    repo = "pretalx-media-ccc-de";
    rev = "v${version}";
    hash = "sha256-QCnZZpYjHxj92Dl2nRd4lXapufcqRmlVH6LEq0rzQ2U=";
  };

  build-system = [ setuptools ];

  pythonImportsCheck = [ "pretalx_media_ccc_de" ];

  meta = {
    description = "Pull recordings from media.ccc.de and embed them in talk pages";
    homepage = "https://github.com/pretalx/pretalx-media-ccc-de";
    license = lib.licenses.asl20;
    maintainers = with lib.maintainers; [ wegank ];
  };
}
Loading