python310Packages.onlykey-solo-python: fix compatibility with fido2 1.1.3 (#354382)
[NixPkgs.git] / pkgs / tools / networking / maubot / plugins / default.nix
blobb60589b9df7e9a2712ede1c03a193ba88a93294b
1 { lib
2 , fetchgit
3 , fetchFromGitHub
4 , fetchFromGitLab
5 , fetchFromGitea
6 , stdenvNoCC
7 , callPackage
8 , ensureNewerSourcesForZipFilesHook
9 , maubot
10 , python3
11 , poetry
12 , formats
15 let
16   # pname: plugin id (example: xyz.maubot.echo)
17   # version: plugin version
18   # other attributes are passed directly to stdenv.mkDerivation (you at least need src)
19   buildMaubotPlugin = attrs@{ version, pname, base_config ? null, ... }:
20     stdenvNoCC.mkDerivation (builtins.removeAttrs attrs [ "base_config" ] // {
21       pluginName = "${pname}-v${version}.mbp";
22       nativeBuildInputs = (attrs.nativeBuildInputs or [ ]) ++ [
23         ensureNewerSourcesForZipFilesHook
24         maubot
25       ];
26       buildPhase = ''
27         runHook preBuild
29         mbc build
31         runHook postBuild
32       '';
34       postPatch = lib.optionalString (base_config != null) ''
35         [ -e base-config.yaml ] || (echo "base-config.yaml doesn't exist, can't override it" && exit 1)
36         cp "${if builtins.isPath base_config || lib.isDerivation base_config then base_config
37           else if builtins.isString base_config then builtins.toFile "base-config.yaml" base_config
38           else (formats.yaml { }).generate "base-config.yaml" base_config}" base-config.yaml
39       '' + attrs.postPatch or "";
41       installPhase = ''
42         runHook preInstall
44         mkdir -p $out/lib/maubot-plugins
45         install -m 444 $pluginName $out/lib/maubot-plugins
47         runHook postInstall
48       '';
49     });
51   generated = import ./generated.nix {
52     inherit lib fetchgit fetchFromGitHub fetchFromGitLab
53       fetchFromGitea python3 poetry buildMaubotPlugin;
54   };
56 generated // {
57   inherit buildMaubotPlugin;
59   allOfficialPlugins =
60     builtins.filter
61       (x: x.isOfficial && !x.meta.broken)
62       (builtins.attrValues generated);
64   allPlugins =
65     builtins.filter
66       (x: !x.meta.broken)
67       (builtins.attrValues generated);