aboutsummaryrefslogtreecommitdiffstats
path: root/net-im
diff options
context:
space:
mode:
authorJan T <jan@jantuomi.fi>2026-07-23 19:24:22 +0300
committerJan Tuomi <jan@jantuomi.fi>2026-07-23 19:26:00 +0300
commitd57b5cd7830a5b4ed1437b1b648dca62a9b6eea3 (patch)
tree85c5e69424dd2fe4c07be9dbb1b4267ee1503c3d /net-im
*/*: initial commit
Diffstat (limited to 'net-im')
-rw-r--r--net-im/hommabot/Makefile39
-rw-r--r--net-im/hommabot/files/hommabot.in82
-rw-r--r--net-im/hommabot/files/pkg-message.in31
-rw-r--r--net-im/hommabot/pkg-descr1
-rw-r--r--net-im/taulubot/Makefile50
-rw-r--r--net-im/taulubot/distinfo3
-rw-r--r--net-im/taulubot/files/pkg-message.in30
-rw-r--r--net-im/taulubot/files/taulubot.in81
-rw-r--r--net-im/taulubot/pkg-descr1
9 files changed, 318 insertions, 0 deletions
diff --git a/net-im/hommabot/Makefile b/net-im/hommabot/Makefile
new file mode 100644
index 0000000..1deaa05
--- /dev/null
+++ b/net-im/hommabot/Makefile
@@ -0,0 +1,39 @@
+PORTNAME= hommabot
+PORTVERSION= 2.0.0
+CATEGORIES= net-im
+
+MAINTAINER= jan@jantuomi.fi
+COMMENT= Telegram bot for household task management
+
+LICENSE= ISCL
+
+USE_GITHUB= yes
+GH_ACCOUNT= jantuomi
+GH_PROJECT= hommabot2
+GH_TAGNAME= main
+
+NO_CHECKSUM= yes
+NO_ARCH= yes
+NO_BUILD= yes
+
+RUN_DEPENDS= node:www/node \
+ npm:www/npm
+
+SUB_FILES= pkg-message
+USE_RC_SUBR= hommabot
+
+APPDIR= ${PREFIX}/hommabot
+STAGE_APPDIR= ${STAGEDIR}${APPDIR}
+
+do-install:
+ ${MKDIR} ${STAGE_APPDIR}
+ ${INSTALL_DATA} ${WRKSRC}/package.json ${STAGE_APPDIR}/
+ ${INSTALL_DATA} ${WRKSRC}/package-lock.json ${STAGE_APPDIR}/
+ ${INSTALL_DATA} ${WRKSRC}/tsconfig.json ${STAGE_APPDIR}/
+ (cd ${WRKSRC}/src && ${COPYTREE_SHARE} . ${STAGE_APPDIR}/src)
+
+post-install:
+ @(cd ${STAGEDIR}${PREFIX} && ${FIND} hommabot -type f -o -type l | ${SORT}) >> ${TMPPLIST}
+ @(cd ${STAGEDIR}${PREFIX} && ${FIND} hommabot -type d | ${SORT} -r | ${SED} 's|^|@dir |') >> ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/net-im/hommabot/files/hommabot.in b/net-im/hommabot/files/hommabot.in
new file mode 100644
index 0000000..df18e08
--- /dev/null
+++ b/net-im/hommabot/files/hommabot.in
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# PROVIDE: hommabot
+# REQUIRE: NETWORKING
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="hommabot"
+rcvar="hommabot_enable"
+pidfile="/var/run/${name}.pid"
+
+load_rc_config $name
+
+: ${hommabot_enable:="NO"}
+: ${hommabot_token_file:="%%PREFIX%%/etc/hommabot.token"}
+: ${hommabot_data_dir:="/var/db/hommabot"}
+: ${hommabot_tz:="Europe/Helsinki"}
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+hommabot_start()
+{
+ if [ ! -f "${hommabot_token_file}" ]; then
+ echo "${name}: token file ${hommabot_token_file} not found"
+ return 1
+ fi
+ echo "Starting ${name}..."
+ BOT_TOKEN=$(cat "${hommabot_token_file}")
+ if [ -z "${BOT_TOKEN}" ]; then
+ echo "${name}: token file ${hommabot_token_file} is empty"
+ return 1
+ fi
+ cd %%PREFIX%%/hommabot
+ if [ ! -d "%%PREFIX%%/hommabot/node_modules" ]; then
+ echo "${name}: installing dependencies (first run)..."
+ npm ci --prefix %%PREFIX%%/hommabot || {
+ echo "${name}: npm ci failed"
+ return 1
+ }
+ fi
+ mkdir -p "${hommabot_data_dir}"
+ chmod -R 770 "${hommabot_data_dir}"
+ daemon -p ${pidfile} -o /var/log/hommabot.log env \
+ PATH=%%PREFIX%%/bin:/usr/local/bin:/usr/bin:/bin \
+ TELEGRAM_BOT_TOKEN="${BOT_TOKEN}" \
+ SQLITE_PATH="${hommabot_data_dir}/db.sqlite3" \
+ TZ="${hommabot_tz}" \
+ npm start
+
+
+ for i in $(seq 5); do
+ sleep 1
+ if [ ! -f ${pidfile} ]; then
+ echo "Failed to start ${name}"
+ return 1
+ fi
+ done
+}
+
+hommabot_stop()
+{
+ if [ -f ${pidfile} ]; then
+ echo "Stopping ${name}..."
+ kill $(cat ${pidfile}) 2>/dev/null
+ rm -f ${pidfile}
+ fi
+}
+
+hommabot_status()
+{
+ if [ -f ${pidfile} ] && kill -0 $(cat ${pidfile}) 2>/dev/null; then
+ echo "${name} is running as pid $(cat ${pidfile})"
+ else
+ echo "${name} is not running"
+ return 1
+ fi
+}
+
+run_rc_command "$1"
diff --git a/net-im/hommabot/files/pkg-message.in b/net-im/hommabot/files/pkg-message.in
new file mode 100644
index 0000000..34b2602
--- /dev/null
+++ b/net-im/hommabot/files/pkg-message.in
@@ -0,0 +1,31 @@
+[
+ {
+ type: install
+ message: <<EOM
+========================================================================
+
+Hommabot requires a Telegram bot token.
+
+Create the token file:
+
+ install -m 600 /dev/null %%PREFIX%%/etc/hommabot.token
+
+Then edit it:
+
+ ee %%PREFIX%%/etc/hommabot.token
+
+Then enable the service and configure settings:
+
+ sysrc hommabot_enable=YES
+ sysrc hommabot_data_dir=/var/db/hommabot
+ sysrc hommabot_token_file=%%PREFIX%%/etc/hommabot.token
+ sysrc hommabot_tz=Europe/Helsinki
+
+Start the service:
+
+ service hommabot start
+
+========================================================================
+EOM
+ }
+]
diff --git a/net-im/hommabot/pkg-descr b/net-im/hommabot/pkg-descr
new file mode 100644
index 0000000..1ac6d9c
--- /dev/null
+++ b/net-im/hommabot/pkg-descr
@@ -0,0 +1 @@
+Telegram bot for household task management.
diff --git a/net-im/taulubot/Makefile b/net-im/taulubot/Makefile
new file mode 100644
index 0000000..7db66f7
--- /dev/null
+++ b/net-im/taulubot/Makefile
@@ -0,0 +1,50 @@
+PORTNAME= taulubot
+PORTVERSION= 1.0.0
+CATEGORIES= net-im
+
+MAINTAINER= jan@jantuomi.fi
+COMMENT= Telegram bot for funny pictures of paintings haha
+
+LICENSE= ISCL
+
+USE_GITHUB= yes
+GH_ACCOUNT= jantuomi
+GH_TAGNAME= v1.0.0
+
+NO_CHECKSUM= yes
+NO_ARCH= yes
+NO_BUILD= yes
+
+USES= python:3.11+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}aiohttp>0:www/py-aiohttp@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pillow>0:graphics/py-pillow@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}python-dotenv>0:www/py-python-dotenv@${PY_FLAVOR}
+
+SUB_FILES= pkg-message
+SUB_LIST= PYTHON_CMD=${PYTHON_CMD}
+
+USE_RC_SUBR= taulubot
+
+APPDIR= ${PREFIX}/taulubot
+STAGE_APPDIR= ${STAGEDIR}${APPDIR}
+
+do-install:
+ ${MKDIR} ${STAGE_APPDIR}/app
+
+ ${INSTALL_DATA} ${WRKSRC}/taulubot.py ${STAGE_APPDIR}/app/
+ ${INSTALL_DATA} ${WRKSRC}/golden.png ${STAGE_APPDIR}/app/
+ ${INSTALL_DATA} ${WRKSRC}/wooden.png ${STAGE_APPDIR}/app/
+
+ (cd ${WRKSRC}/telepot && ${COPYTREE_SHARE} . ${STAGE_APPDIR}/app/telepot)
+
+post-install:
+ @(cd ${STAGEDIR}${PREFIX} && \
+ ${FIND} taulubot -type f -o -type l | \
+ ${SORT}) >> ${TMPPLIST}
+
+ @(cd ${STAGEDIR}${PREFIX} && \
+ ${FIND} taulubot -type d | \
+ ${SORT} -r | \
+ ${SED} 's|^|@dir |') >> ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/net-im/taulubot/distinfo b/net-im/taulubot/distinfo
new file mode 100644
index 0000000..62c07ce
--- /dev/null
+++ b/net-im/taulubot/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1784702400
+SHA256 (jantuomi-taulubot-v1.0.0_GH0.tar.gz) = 6b7286a13ca0a78cdf58ae842f31315a3973d2d32b5f8065444f04c1daa8cf3d
+SIZE (jantuomi-taulubot-v1.0.0_GH0.tar.gz) = 1017042
diff --git a/net-im/taulubot/files/pkg-message.in b/net-im/taulubot/files/pkg-message.in
new file mode 100644
index 0000000..deeeac9
--- /dev/null
+++ b/net-im/taulubot/files/pkg-message.in
@@ -0,0 +1,30 @@
+[
+ {
+ type: install
+ message: <<EOM
+========================================================================
+
+Taulubot requires a Telegram bot token.
+
+Create the token file:
+
+ install -m 600 /dev/null %%PREFIX%%/etc/taulubot.token
+
+Then edit it:
+
+ ee %%PREFIX%%/etc/taulubot.token
+
+Then enable the service and configure settings:
+
+ sysrc taulubot_enable=YES
+ sysrc taulubot_photos_dir=/var/db/taulubot
+ sysrc taulubot_token_file=%%PREFIX%%/etc/taulubot.token
+
+Start the service:
+
+ service taulubot start
+
+========================================================================
+EOM
+ }
+]
diff --git a/net-im/taulubot/files/taulubot.in b/net-im/taulubot/files/taulubot.in
new file mode 100644
index 0000000..46a65be
--- /dev/null
+++ b/net-im/taulubot/files/taulubot.in
@@ -0,0 +1,81 @@
+#!/bin/sh
+
+# PROVIDE: taulubot
+# REQUIRE: NETWORKING
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="taulubot"
+rcvar="taulubot_enable"
+pidfile="/var/run/${name}.pid"
+
+load_rc_config "$name"
+
+: ${taulubot_enable:="NO"}
+: ${taulubot_token_file:="%%PREFIX%%/etc/taulubot.token"}
+: ${taulubot_photos_dir:="/var/db/taulubot"}
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+taulubot_start()
+{
+ if [ ! -f "${taulubot_token_file}" ]; then
+ echo "${name}: token file ${taulubot_token_file} not found"
+ return 1
+ fi
+
+ BOT_TOKEN=$(cat "${taulubot_token_file}")
+
+ if [ -z "${BOT_TOKEN}" ]; then
+ echo "${name}: token file ${taulubot_token_file} is empty"
+ return 1
+ fi
+
+ echo "Starting ${name}..."
+
+ cd %%PREFIX%%/taulubot/app || return 1
+
+ mkdir -p "${taulubot_photos_dir}"
+ chmod 770 "${taulubot_photos_dir}"
+
+ daemon -p "${pidfile}" -o /var/log/taulubot.log env \
+ PATH=%%PREFIX%%/bin:/usr/local/bin:/usr/bin:/bin \
+ PYTHONPATH=%%PREFIX%%/taulubot/vendor:%%PREFIX%%/taulubot/app \
+ BOT_TOKEN="${BOT_TOKEN}" \
+ PHOTOS_DIR="${taulubot_photos_dir}" \
+ %%PYTHON_CMD%% %%PREFIX%%/taulubot/app/taulubot.py
+
+ i=0
+ while [ "${i}" -lt 5 ]; do
+ sleep 1
+ if [ ! -f "${pidfile}" ]; then
+ echo "Failed to start ${name}"
+ return 1
+ fi
+ i=$((i + 1))
+ done
+}
+
+taulubot_stop()
+{
+ if [ -f "${pidfile}" ]; then
+ echo "Stopping ${name}..."
+ kill "$(cat "${pidfile}")" 2>/dev/null
+ rm -f "${pidfile}"
+ fi
+}
+
+taulubot_status()
+{
+ if [ -f "${pidfile}" ] && kill -0 "$(cat "${pidfile}")" 2>/dev/null; then
+ echo "${name} is running as pid $(cat "${pidfile}")"
+ else
+ echo "${name} is not running"
+ return 1
+ fi
+}
+
+run_rc_command "$1"
diff --git a/net-im/taulubot/pkg-descr b/net-im/taulubot/pkg-descr
new file mode 100644
index 0000000..0b9ad8b
--- /dev/null
+++ b/net-im/taulubot/pkg-descr
@@ -0,0 +1 @@
+Telegram bot for funny pictures of paintings haha