summary refs log tree commit diff
path: root/services/pds.nix
blob: 45be8432d99b23bc3e92ffe9148258480a7b7b47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
{ config, pkgs, auxiliaryPkgs, ... }:

let
  inherit (pkgs) dockerTools glibc;
  inherit (auxiliaryPkgs) common;

  inherit (auxiliaryPkgs.bluesky) pds pdsadmin;

  pdsLocalPort = 16419;
  pdsDir = "/srv/pds";

  pdsImage = dockerTools.buildLayeredImage {
    name = "pds";
    tag = pds.version;
    fromImage = common.alpine.base;
    contents = [ pds pdsadmin glibc ];
    # this convices `detect-libc`, which is used by `sharp`
    # to pick the correct binary artifact, that we're using
    # glibc and not musl to choose the right one.
    extraCommands = ''
      mkdir -p usr/bin
      ln -s ${glibc.bin}/bin/ldd usr/bin/ldd
    '';
  };

in
{
  age.secrets.pds-secrets = {
    file = ../secrets/pds-secrets.age;
  };

  foundation.services.pds = {
    image = { imageFile = pdsImage; image = "pds:${pds.version}"; };
    ports = [ [ pdsLocalPort 3000 ] ];

    volumes = [
      [ "${pdsDir}" "/pds" ]
    ];

    environment = {
      PDS_PORT = "3000";
      PDS_HOSTNAME = "pds.rnrd.eu";

      PDS_DATA_DIRECTORY = "/pds";
      PDS_BLOBSTORE_DISK_LOCATION = "/pds/blocks";
      PDS_BLOB_UPLOAD_LIMIT = "52428800";

      PDS_DID_PLC_URL = "https://plc.directory";
      PDS_BSKY_APP_VIEW_URL = "https://api.bsky.app";
      PDS_BSKY_APP_VIEW_DID = "did:web:api.bsky.app";
      PDS_REPORT_SERVICE_URL = "https://mod.bsky.app";
      PDS_REPORT_SERVICE_DID = "did:plc:ar7c4by46qjdydhdevvrndac";
      PDS_CRAWLERS = "https://bsky.network";

      LOG_ENABLED = "true";
    };

    environmentFiles = [ config.age.secrets.pds-secrets.path ];

    workdir = "/pds";
    entrypoint = "${pds}/bin/pds";
  };
}