forked from NixOS/nixpkgs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request NixOS#265368 from chayleaf/maubot
nixos/maubot: init
- Loading branch information
Showing
11 changed files
with
3,230 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
# Maubot {#module-services-maubot} | ||
|
||
[Maubot](https://github.com/maubot/maubot) is a plugin-based bot | ||
framework for Matrix. | ||
|
||
## Configuration {#module-services-maubot-configuration} | ||
|
||
1. Set [](#opt-services.maubot.enable) to `true`. The service will use | ||
SQLite by default. | ||
2. If you want to use PostgreSQL instead of SQLite, do this: | ||
|
||
```nix | ||
services.maubot.settings.database = "postgresql://maubot@localhost/maubot"; | ||
``` | ||
|
||
If the PostgreSQL connection requires a password, you will have to | ||
add it later on step 8. | ||
3. If you plan to expose your Maubot interface to the web, do something | ||
like this: | ||
```nix | ||
services.nginx.virtualHosts."matrix.example.org".locations = { | ||
"/_matrix/maubot/" = { | ||
proxyPass = "http://127.0.0.1:${toString config.services.maubot.settings.server.port}"; | ||
proxyWebsockets = true; | ||
}; | ||
}; | ||
services.maubot.settings.server.public_url = "matrix.example.org"; | ||
# do the following only if you want to use something other than /_matrix/maubot... | ||
services.maubot.settings.server.ui_base_path = "/another/base/path"; | ||
``` | ||
4. Optionally, set `services.maubot.pythonPackages` to a list of python3 | ||
packages to make available for Maubot plugins. | ||
5. Optionally, set `services.maubot.plugins` to a list of Maubot | ||
plugins (full list available at https://plugins.maubot.xyz/): | ||
```nix | ||
services.maubot.plugins = with config.services.maubot.package.plugins; [ | ||
reactbot | ||
# This will only change the default config! After you create a | ||
# plugin instance, the default config will be copied into that | ||
# instance's config in Maubot's database, and further base config | ||
# changes won't affect the running plugin. | ||
(rss.override { | ||
base_config = { | ||
update_interval = 60; | ||
max_backoff = 7200; | ||
spam_sleep = 2; | ||
command_prefix = "rss"; | ||
admins = [ "@chayleaf:pavluk.org" ]; | ||
}; | ||
}) | ||
]; | ||
# ...or... | ||
services.maubot.plugins = config.services.maubot.package.plugins.allOfficialPlugins; | ||
# ...or... | ||
services.maubot.plugins = config.services.maubot.package.plugins.allPlugins; | ||
# ...or... | ||
services.maubot.plugins = with config.services.maubot.package.plugins; [ | ||
(weather.override { | ||
# you can pass base_config as a string | ||
base_config = '' | ||
default_location: New York | ||
default_units: M | ||
default_language: | ||
show_link: true | ||
show_image: false | ||
''; | ||
}) | ||
]; | ||
``` | ||
6. Start Maubot at least once before doing the following steps (it's | ||
necessary to generate the initial config). | ||
7. If your PostgreSQL connection requires a password, add | ||
`database: postgresql://user:password@localhost/maubot` | ||
to `/var/lib/maubot/config.yaml`. This overrides the Nix-provided | ||
config. Even then, don't remove the `database` line from Nix config | ||
so the module knows you use PostgreSQL! | ||
8. To create a user account for logging into Maubot web UI and | ||
configuring it, generate a password using the shell command | ||
`mkpasswd -R 12 -m bcrypt`, and edit `/var/lib/maubot/config.yaml` | ||
with the following: | ||
|
||
```yaml | ||
admins: | ||
admin_username: $2b$12$g.oIStUeUCvI58ebYoVMtO/vb9QZJo81PsmVOomHiNCFbh0dJpZVa | ||
``` | ||
Where `admin_username` is your username, and `$2b...` is the bcrypted | ||
password. | ||
9. Optional: if you want to be able to register new users with the | ||
Maubot CLI (`mbc`), and your homeserver is private, add your | ||
homeserver's registration key to `/var/lib/maubot/config.yaml`: | ||
|
||
```yaml | ||
homeservers: | ||
matrix.example.org: | ||
url: https://matrix.example.org | ||
secret: your-very-secret-key | ||
``` | ||
10. Restart Maubot after editing `/var/lib/maubot/config.yaml`,and | ||
Maubot will be available at | ||
`https://matrix.example.org/_matrix/maubot`. If you want to use the | ||
`mbc` CLI, it's available using the `maubot` package (`nix-shell -p | ||
maubot`). |
Oops, something went wrong.