mirror of
https://github.com/kmein/niveum
synced 2026-03-21 12:21:08 +01:00
init brainmelter
This commit is contained in:
@@ -335,6 +335,7 @@
|
|||||||
packages = rec {
|
packages = rec {
|
||||||
auc = pkgs.callPackage packages/auc.nix {};
|
auc = pkgs.callPackage packages/auc.nix {};
|
||||||
betacode = pkgs.callPackage packages/betacode.nix {};
|
betacode = pkgs.callPackage packages/betacode.nix {};
|
||||||
|
brainmelter = pkgs.callPackage packages/brainmelter.nix {};
|
||||||
brassica = pkgs.callPackage packages/brassica.nix {};
|
brassica = pkgs.callPackage packages/brassica.nix {};
|
||||||
cheat-sh = pkgs.callPackage packages/cheat-sh.nix {};
|
cheat-sh = pkgs.callPackage packages/cheat-sh.nix {};
|
||||||
closest = pkgs.callPackage packages/closest {};
|
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