Kazarma
Matrix bridge for the ActivityPub network
Declared in: projects/Kazarma/default.nix
Demo
Implement missing demoOptions
services.kazarma
-
Whether to enable Kazarma.
- Type:
boolean- Default:
false- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
The kazarma package to use.
- Type:
package- Default:
pkgs.kazarma- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Configuration for Kazarma, will be passed as environment variables. See https://docs.kazar.ma/administrator-guide/configuration.
- Type:
open submodule of attribute set of string- Default:
{ }- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
ActivityPub server domain name.
- Type:
string- Default:
"localhost"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Database name.
- Type:
string- Default:
"kazarma"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Database host address.
- Type:
string- Default:
"127.0.0.1"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Database password. It's recommended to use systemd.services.kazarma.environmentFiles instead.
- Type:
string- Default:
"kazarma"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Database user.
- Type:
string- Default:
"kazarma"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Kazarma host address.
- Type:
string- Default:
"localhost"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Matrix server domain name.
- Type:
string- Default:
"localhost"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Matrix server URL.
- Type:
string- Default:
"http://127.0.0.1:8008"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
Kazarma port.
- Type:
string- Default:
"4000"- Declared in:
- projects/Kazarma/services/kazarma/module.nix
-
The Erlang Distribution cookie. It's recommend to use a long and randomly generated string such as:
head -c 40 /dev/random | base32. It's also recommended to only use alphanumeric characters and underscores.- Type:
string- Declared in:
- projects/Kazarma/services/kazarma/module.nix
services.kazarma.enable
services.kazarma.package
services.kazarma.settings
services.kazarma.settings.ACTIVITY_PUB_DOMAIN
services.kazarma.settings.DATABASE_DB
services.kazarma.settings.DATABASE_HOST
services.kazarma.settings.DATABASE_PASSWORD
services.kazarma.settings.DATABASE_USERNAME
services.kazarma.settings.HOST
services.kazarma.settings.MATRIX_DOMAIN
services.kazarma.settings.MATRIX_URL
services.kazarma.settings.PORT
services.kazarma.settings.RELEASE_COOKIE
Examples
Enable kazarma
{ config, pkgs, ... }: let kazarmaCfg = config.services.kazarma.settings; # https://docs.kazar.ma/administrator-guide/erlang-release#configure # openssl rand -hex 64 ACCESS_TOKEN = "4f85399b28b835cbd031e8cafb4b30e89cb2462df0aac15024b1e4d0bc75a656f1388a5b61103dec7dac80081b71a18bfe16b4f6c90238d3c9a22bd56e433d32"; HOMESERVER_TOKEN = "e830634167755875c63f92bf33558e0a25f9b57ab8e8d9810ecf1d8c02c6e9f8bb928541fb122ac78e8d9673a923eead7d22c7fe826c86689deba58c227fa3d7"; SECRET_KEY_BASE = "69c359e216fc4bde402905cdcae0b86bfe3ad16277d40241fe2afcdfb991fa6996424970b12ffd877e5263148bbf275d8520bcf692a3741a6d858ca6e9f5087b"; in { services.kazarma = { enable = true; settings = { RELEASE_COOKIE = "CDODIMOGYEETMVEJAAFQNXNQ7RE6VWBVD4IGN5GTAA6U4WPNVFPQ===="; inherit ACCESS_TOKEN HOMESERVER_TOKEN SECRET_KEY_BASE; }; }; systemd.services.kazarma = { requires = [ "postgresql.target" "matrix-synapse.service" "honk.service" ]; after = [ "postgresql.target" "matrix-synapse.service" "honk.service" ]; }; services.postgresql = { enable = true; initialScript = let synapseDbCfg = config.services.matrix-synapse.settings.database.args; in pkgs.writeText "init-sql-script" '' CREATE ROLE "${kazarmaCfg.DATABASE_USERNAME}" LOGIN PASSWORD '${kazarmaCfg.DATABASE_PASSWORD}'; CREATE DATABASE "${kazarmaCfg.DATABASE_DB}" OWNER "${kazarmaCfg.DATABASE_USERNAME}"; CREATE ROLE "${synapseDbCfg.user}" LOGIN PASSWORD '${synapseDbCfg.password}'; CREATE DATABASE "${synapseDbCfg.database}" OWNER "${synapseDbCfg.user}" TEMPLATE template0 LC_COLLATE = "C" LC_CTYPE = "C"; ''; }; # ActivityPub server services.honk = { enable = true; username = "username"; servername = "servername"; passwordFile = pkgs.writeText "honk-password" "password"; }; services.matrix-synapse = { enable = true; settings = { database = { name = "psycopg2"; args.password = "matrix-synapse"; }; app_service_config_files = [ # https://docs.kazar.ma/administrator-guide/homeserver-configuration (pkgs.writeText "kazarma.yaml" ( builtins.toJSON { id = "Kazarma"; url = "http://${kazarmaCfg.HOST}:${kazarmaCfg.PORT}/matrix/"; as_token = ACCESS_TOKEN; hs_token = HOMESERVER_TOKEN; sender_localpart = "_kazarma"; namespaces = { aliases = [ { exclusive = true; regex = "#_ap_.+___.+"; } ]; users = [ { exclusive = true; regex = "@_ap_.+___.+"; } ]; }; } )) ]; }; }; }
Declared in: projects/Kazarma/services/kazarma/examples/basic.nix
Metadata
This project is funded by NLnet through these subgrants:
- Entrust
- Kazarma-Release
- Review
- Kazarma
Related links: