{ 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"; }; }