❄️ Dotfiles for our NixOS system configuration.

feat(services): destiny labeler

Chloe d78a5bde f6b5a92e

Changed files
+55
secrets
services
destiny-labeler
+16
secrets/destiny-labeler.age
···
···
+
-----BEGIN AGE ENCRYPTED FILE-----
+
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IGN2U2dKQSBKUEJG
+
S1RtWkR6aVZuUmtWci9tTy90L05ZbDZTbTZGaTZWeGJsVWRoQzNBCkd5cFlEYTVJ
+
QVlzRTlidEJFallZTmMzTERLelNDaWZQM25aeVdnWTBVUTAKLT4gc3NoLWVkMjU1
+
MTkgMUNUOTd3IG1XUHJ5NWk4UUk4Szc1TStxWnZCV1hiQ0JVMDB3OFV3eWZWM2Jj
+
ZkZNU2sKOTBnZFFSYUovNFhxK21vL1cvY0FkMmlpeGJDZ0NGdWlWTElnL2MyTGFY
+
SQotPiBzc2gtZWQyNTUxOSBlUDNUdFEgRjJmT1VCTVVjZk9MK0RMb3ByU1I0N2dk
+
MkZQamVxdXBKL0gvR2JMaFJ6cwpnUkxrbDUweVg5c1FTdHZJbWsyWTdRNVo4U205
+
amNsM3FNZEYrVVoranF3Ci0+IFspby4tZ3JlYXNlIG08I1tJOCBlI3dNXHUgMmAo
+
czdZQwpCZVRBV1J1MDZWTjBhR3FlNlVyOGZ4SmYwcndpQUZXQlRSQkI0bzhnUTVt
+
MzQ0ZTdtTlJKR2FBM00wNUhzbExhCmxFMlBnVm5SaEVyZnoyTGJUYVJ2QTI4Y3E1
+
a3dOZU85a1lYaTRxZjdtWUdXdi9nL29peGZKdWRTeEtsOQotLS0gcTBWZlZKOG8y
+
NW9LZmUrTWFLR3NKbEV0ZnlKNDYzNnhTWmx1Y0w4VnVmcwo6/NlBNJ3sHF7etQ0r
+
K1VzsO6xG9dSwdp5Wj2+PCkqEq8Knd9xEePLw4/hd47pz8JKjaKFhZdo8+QleyyI
+
ovi4czrf8Jc/X75TDASjLIf51EZ0l74en2n8nRPLusuvb8rO
+
-----END AGE ENCRYPTED FILE-----
+1
secrets/secrets.nix
···
{
"bluesky-pds.age".publicKeys = keys;
"caddy.age".publicKeys = keys;
"glance.age".publicKeys = keys;
"lanyard.age".publicKeys = keys;
"minio.age".publicKeys = keys;
···
{
"bluesky-pds.age".publicKeys = keys;
"caddy.age".publicKeys = keys;
+
"destiny-labeler.age".publicKeys = keys;
"glance.age".publicKeys = keys;
"lanyard.age".publicKeys = keys;
"minio.age".publicKeys = keys;
+38
services/destiny-labeler/default.nix
···
···
+
{ config, ... }:
+
+
{
+
age.secrets.destiny-labeler = {
+
file = ../../secrets/destiny-labeler.age;
+
mode = "600";
+
};
+
+
virtualisation.oci-containers.containers."destiny-labeler" = {
+
image = "ghcr.io/SapphoSys/destiny-labeler:main";
+
pull = "always";
+
ports = [ "4001:4001" ];
+
environment = {
+
DID = "did:plc:zt2oycjggn5gwdtcgphdh4tn";
+
SIGN_KEY = config.age.secrets.destiny-labeler.path;
+
URL = "wss://jetstream.atproto.tools/subscribe";
+
NODE_ENV = "production";
+
};
+
volumes = [
+
"./data/cursor.txt:/app/cursor.txt"
+
"./data/labels.db:/app/labels.db"
+
"./data/labels.db-shm:/app/labels.db-shm"
+
"./data/labels.db-wal:/app/labels.db-wal"
+
];
+
extraOptions = [
+
"--restart=always"
+
"--network=host"
+
];
+
};
+
+
services.caddy.virtualHosts."labeler.sappho.systems" = {
+
extraConfig = ''
+
import common
+
import tls_cloudflare
+
reverse_proxy http://destiny-labeler:4001
+
'';
+
};
+
}