1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 10:11:08 +01:00

init brainmelter

This commit is contained in:
2025-05-14 06:57:06 +02:00
parent 8c838966f2
commit 4c9305c89d
2 changed files with 40 additions and 0 deletions

View File

@@ -335,6 +335,7 @@
packages = rec {
auc = pkgs.callPackage packages/auc.nix {};
betacode = pkgs.callPackage packages/betacode.nix {};
brainmelter = pkgs.callPackage packages/brainmelter.nix {};
brassica = pkgs.callPackage packages/brassica.nix {};
cheat-sh = pkgs.callPackage packages/cheat-sh.nix {};
closest = pkgs.callPackage packages/closest {};

39
packages/brainmelter.nix Executable file
View File

@@ -0,0 +1,39 @@
{ writers, flite, netcat, gnused, ... }:
writers.writeDashBin "brainmelter" ''
SERVER="brockman.news"
PORT=6667
NICK="irccat"
USER="irccat"
CHANNEL="#all"
# Open connection to IRC server using a FIFO and netcat
FIFO=$(mktemp -u)
mkfifo "$FIFO"
trap "rm -f $FIFO" EXIT
# Send IRC commands
{
echo "NICK $NICK"
echo "USER $USER 0 * :$USER"
sleep 5
echo "JOIN $CHANNEL"
while true; do
sleep 30
echo "PING :keepalive"
done
} > "$FIFO" &
# Read from server and write to stdout
${netcat}/bin/nc "$SERVER" "$PORT" < "$FIFO" | while IFS= read -r line; do
voice="$(echo -e "awb\nkal\nrms\nslt" | shuf -n1)"
echo "$line" \
| ${gnused}/bin/sed -n 's/.*go.brockman.news\/\S\+ //p' \
| tee /dev/stderr \
| ${flite}/bin/flite -voice "$voice"
# Respond to PINGs to avoid timeout
if [ "$line" = PING* ]; then
server_ping=$(echo "$line" | cut -d':' -f2)
echo "PONG :$server_ping" > "$FIFO"
fi
done
''