mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
init brainmelter
This commit is contained in:
@@ -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
39
packages/brainmelter.nix
Executable 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
|
||||
''
|
||||
Reference in New Issue
Block a user