Flake to setup a local env for atproto development

Add mailhog

edouard.paris 4ad3366a 922321b7

verified
Changed files
+29 -4
packages
+12 -4
flake.nix
···
did-plc-server = pkgs.callPackage ./packages/did-method-plc.nix { };
caddy-proxy = pkgs.callPackage ./packages/caddy.nix { };
pds = pkgs.callPackage ./packages/pds.nix { };
in
{
packages.${system} = {
···
caddy-proxy = caddy-proxy;
pds = pds;
# Script to generate certificates on host
generate-certs = pkgs.writeShellScriptBin "generate-certs" ''
···
curl
bluesky-pds
openssl
];
shellHook = ''
···
echo " nix run .#caddy-proxy - Start Caddy with full config"
echo " nix run .#did-plc-server - Start DID PLC server"
echo " nix run .#pds - Start Bluesky PDS server"
echo ""
echo "Services:"
echo " Bluesky PDS: https://pds.example.org:8443 (proxied from port 3000)"
echo " DID PLC: https://plc.example.org:8444 (proxied from port 2582)"
echo ""
echo "Environment variables:"
echo " BLUESKY_PDS_PORT=3000 - Port for Bluesky PDS (default: 3000)"
···
echo " 127.0.0.1 pds.example.org"
echo " 127.0.0.1 plc.example.org"
echo " 2. Run 'nix run .#generate-certs' to create certificates"
-
echo " 3. Run 'nix run .#did-plc-server' in one terminal (if needed)"
-
echo " 4. Run 'nix run .#pds' in another terminal"
-
echo " 5. Run 'nix run .#caddy-proxy' in another terminal"
-
echo " 6. Access services at:"
echo " - Bluesky PDS: https://pds.example.org:8443"
echo " - DID PLC: https://plc.example.org:8444"
'';
};
};
···
did-plc-server = pkgs.callPackage ./packages/did-method-plc.nix { };
caddy-proxy = pkgs.callPackage ./packages/caddy.nix { };
pds = pkgs.callPackage ./packages/pds.nix { };
+
mailhog = pkgs.callPackage ./packages/mailhog.nix { };
in
{
packages.${system} = {
···
caddy-proxy = caddy-proxy;
pds = pds;
+
+
mailhog = mailhog;
# Script to generate certificates on host
generate-certs = pkgs.writeShellScriptBin "generate-certs" ''
···
curl
bluesky-pds
openssl
+
mailhog
];
shellHook = ''
···
echo " nix run .#caddy-proxy - Start Caddy with full config"
echo " nix run .#did-plc-server - Start DID PLC server"
echo " nix run .#pds - Start Bluesky PDS server"
+
echo " nix run .#mailhog - Start MailHog email server"
echo ""
echo "Services:"
echo " Bluesky PDS: https://pds.example.org:8443 (proxied from port 3000)"
echo " DID PLC: https://plc.example.org:8444 (proxied from port 2582)"
+
echo " MailHog: http://localhost:8025 (SMTP on port 1025)"
echo ""
echo "Environment variables:"
echo " BLUESKY_PDS_PORT=3000 - Port for Bluesky PDS (default: 3000)"
···
echo " 127.0.0.1 pds.example.org"
echo " 127.0.0.1 plc.example.org"
echo " 2. Run 'nix run .#generate-certs' to create certificates"
+
echo " 3. Run 'nix run .#mailhog' in one terminal"
+
echo " 4. Run 'nix run .#did-plc-server' in another terminal (if needed)"
+
echo " 5. Run 'nix run .#pds' in another terminal"
+
echo " 6. Run 'nix run .#caddy-proxy' in another terminal"
+
echo " 7. Access services at:"
echo " - Bluesky PDS: https://pds.example.org:8443"
echo " - DID PLC: https://plc.example.org:8444"
+
echo " - MailHog: http://localhost:8025"
'';
};
};
+13
packages/mailhog.nix
···
···
+
{ pkgs }:
+
+
pkgs.writeShellScriptBin "mailhog" ''
+
set -e
+
+
echo "Starting MailHog..."
+
echo "Web interface: http://localhost:8025"
+
echo "SMTP server: localhost:1025"
+
echo "Press Ctrl+C to stop"
+
echo ""
+
+
${pkgs.mailhog}/bin/MailHog
+
''
+4
packages/pds.nix
···
# Enable development mode
export PDS_DEV_MODE="true"
${pkgs.bluesky-pds}/bin/pds
''
···
# Enable development mode
export PDS_DEV_MODE="true"
+
# Configure SMTP for MailHog
+
export PDS_EMAIL_SMTP_URL="smtp://localhost:1025"
+
export PDS_EMAIL_FROM_ADDRESS="noreply@pds.example.org"
+
${pkgs.bluesky-pds}/bin/pds
''