# Noisebell [![Space status](https://your-cache-domain.example.com/badge.svg)](https://your-cache-domain.example.com/status) Monitors the door at [Noisebridge](https://www.noisebridge.net) and tells you whether it's open or closed. A Raspberry Pi reads a magnetic sensor on the door and pushes state changes to a cache server. The cache keeps the latest state and fans updates out to chat integrations such as Discord and Zulip. ``` Pi (door sensor) ──webhook──> Cache ──webhook──> Discord / Zulip | polls Pi <-+ | +──webhook──> Pi relay ──webhook──> Home Assistant ``` ## Layout | Directory | What it is | |-----------|------------| | [`pi/`](pi/) | Raspberry Pi OS base with laptop-built Noisebell deploy | | [`remote/`](remote/) | Server-side services (cache, RSS, Discord, Zulip) | | [`hosts/noisebell-do/`](hosts/noisebell-do/) | Standalone DigitalOcean NixOS host for the remote services | | [`secrets/`](secrets/) | Shared agenix-encrypted secrets and recipient rules | Each directory has its own README with setup and configuration details. For hosted deployment, this repo exports `nixosConfigurations.noisebell-do`, a small DigitalOcean NixOS host that imports `noisebell.nixosModules.default`. The host provides deployment-specific values like domains and the Pi address, while the Noisebell module itself points `agenix` at the encrypted files in `secrets/` and consumes the decrypted runtime files on the target machine. Useful commands: - `./scripts/deploy-do [jet@noisebell-do]` redeploys the DigitalOcean remote host - `./scripts/nhs` redeploys the old Hetzner host using the local checkout as the flake input - `scripts/deploy-pios-pi.sh pi@100.66.45.36` redeploys the Raspberry Pi OS machine The full Home Assistant relay workflow is documented in `pi/README.md`.