Contributing
The project lives at github.com/LarsArtmann/offline-banner.
git clone https://github.com/LarsArtmann/offline-banner && cd offline-bannernix develop # dev shellnix flake check # formatting + all module-contract checksnix fmt # treefmt (nixfmt + statix)Hard rules
Section titled “Hard rules”- The module stays single-file and self-contained (
module.nix, QML inlined viapkgs.writeTextDir). - The
OFFLINE_BANNER_*env vars are a public surface — renaming them breaks live systems. - The rationale comments in
module.nixare the contract (non-flashing yellow, debounce, fail-visible probe, push-down animation) — do not silently drop them. probeTimeoutSeconds < checkIntervalSecondsis an eval-time assertion — keep it.
Checks
Section titled “Checks”nix flake check runs formatting, the module contract (unit text, sandbox
directives, restartTriggers, built-shell content), systemd-analyze verify,
the docs-drift gate, and the probe-transition machine test. Rendering itself
needs a live compositor — scripts/capture-demo.sh captures the real QML in
headless sway.