feat(hermes): bot Matrix @hermes (env, secret sops, allowlist)
Homeserver matrix.marcpartensky.com, @hermes:matrix.marcpartensky.com, E2EE required (salles de pont chiffrées), pas de mention requise ni d'auto-thread dans les salles de pont (3+ membres). Allowlist : @marc + son ghost Signal. Token dans secrets/hermes-matrix.yml (règle .sops.yaml dédiée, sopsFile explicite car hors de tower.yml).
This commit is contained in:
@@ -32,3 +32,7 @@ creation_rules:
|
||||
key_groups:
|
||||
- age:
|
||||
- *tower
|
||||
- path_regex: secrets/hermes-matrix\.yml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *tower
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
hermes_matrix_env: ENC[AES256_GCM,data:fdcMTWP/DkWaQDOsAlkPgLbt0LzgQSFS8cKYLxBYznZlY4PD55uJH5z1Q2w/eHci1lXqMm+nyUfBaszOyQ==,iv:iqOk62SC7RMLbxYC6aXVVFIW6JXq1Q5mgG/Plmj9/00=,tag:yef8OL72fnepeWaU9Zeo0w==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwZHNDWE9PUDhwc2lEM1hT
|
||||
QzU3d3UwYStjTEV1bXF6cFc2aEJFR084d1hZCk5xS2dobnFWVmlkemNLR2kwbVNL
|
||||
cUhiTWhyMUlvTXZ2OVpydkwyRS9IK1kKLS0tIE56VXJ4NEJBcVRqTlVVLzFheml6
|
||||
YnExU1FZbFhsMk1kT3daKzVhcHl0NDAKQFX4E6fEbKNai2f7ypvvli3JVDQCmfrH
|
||||
AnieX1EFYdBhjT11zR0PNSZL1p2SGQEaTpPvl4zYgAGZsOm+bBIYoQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
recipient: age1usm3v0ugducrzcwud60dda7xfnj49fdhecj7kcsfm7dzwzrzeyqq2jc2hm
|
||||
lastmodified: "2026-09-25T04:25:11Z"
|
||||
mac: ENC[AES256_GCM,data:akuBPQcQ8nFGMTNvwH3/yS8fWOKKg9QuC96vW6zzECz9tVRQchapXIqZKYtlOmduysx37kE6qatZ/SnD6IQiaqwp5OM44yizr+anLYZukOV2R5h+L9pTiKKBm1OE+9YAyPOeQkArUMwubkxF5dNO1FBTN8F4aC3ycwf5t+MlCqo=,iv:KiFCSqQ29AV2HTlm+4g7agSEGAaXonxgSbfpa4cCCa0=,tag:HbD8tWce0XqOpR4/gk6j9g==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.13.3
|
||||
@@ -17,12 +17,27 @@
|
||||
# --- service hermes ---
|
||||
services.hermes-agent = {
|
||||
enable = true;
|
||||
environmentFiles = [config.sops.secrets."hermes_env".path];
|
||||
environmentFiles = [
|
||||
config.sops.secrets."hermes_env".path
|
||||
config.sops.secrets."hermes_matrix_env".path
|
||||
];
|
||||
addToSystemPackages = true;
|
||||
|
||||
# venv nix scellé -> deps mem0 (mem0ai) installées au runtime dans une cible durable
|
||||
environment.HERMES_LAZY_INSTALL_TARGET = "/var/lib/hermes/.hermes/lazy-python";
|
||||
|
||||
# --- Matrix : bot @hermes (Element + ponts mautrix) ---
|
||||
environment.MATRIX_HOMESERVER = "https://matrix.marcpartensky.com";
|
||||
environment.MATRIX_USER_ID = "@hermes:matrix.marcpartensky.com";
|
||||
# salles du pont = chiffrées E2EE (encryption.default=true côté mautrix-signal)
|
||||
environment.MATRIX_E2EE_MODE = "required";
|
||||
# salle de pont = 3+ membres (bot du pont inclus) -> pas classée DM :
|
||||
# réponse sans mention, et pas d'auto-thread (les ponts aplatissent les threads)
|
||||
environment.MATRIX_REQUIRE_MENTION = "false";
|
||||
environment.MATRIX_AUTO_THREAD = "false";
|
||||
# @marc + son ghost Signal (mautrix-signal)
|
||||
environment.MATRIX_ALLOWED_USERS = "@marc:matrix.marcpartensky.com,@signal_ad927dda-4064-48ff-8652-01a0d71005e4:matrix.marcpartensky.com";
|
||||
|
||||
# psycopg2 buildé par nix (évite le wheel manylinux psycopg2-binary)
|
||||
# numpy : les wheels manylinux cassent sur NixOS (libstdc++.so.6 absent) —
|
||||
# les deps compilées des lazy-installs doivent venir de nix
|
||||
@@ -234,6 +249,12 @@
|
||||
|
||||
sops.secrets."hermes_env" = {};
|
||||
|
||||
# Token Matrix du bot (@hermes) — clé "hermes_matrix_env" du fichier sops,
|
||||
# valeur = contenu dotenv (MATRIX_ACCESS_TOKEN=...) fusionné dans .env
|
||||
sops.secrets."hermes_matrix_env" = {
|
||||
sopsFile = ../../secrets/hermes-matrix.yml;
|
||||
};
|
||||
|
||||
security.sudo.extraRules = [
|
||||
{
|
||||
users = ["marc" "hermes"];
|
||||
|
||||
Reference in New Issue
Block a user