Having text message notifications on my iphone (and apple watch), despite receiving notifications on macbook
Couldn't find anything, so I wrote a python script checks for new messages, and send me notifications via pushover. I turned it into an app and added it to login items, so i only get notifications this way when the macbook's lid is open. It's not clean, but it works.

import sqlite3
import pathlib
import time
import logging
import sys
import requests

logger = logging.getLogger('message-notifier')


def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        d[col[0]] = row[idx]
    return d


conn = sqlite3.connect(str(pathlib.Path.home() / 'Library' / 'Messages' / 'chat.db'))
conn.row_factory = dict_factory
notified = set()
try:
    while True:
        logger.info('running')
        x = conn.execute("select is_read, ROWID from message "
                         "WHERE is_from_me = 0 "
                         "order by date desc limit 10;")
        for msg in x.fetchall():
            if not msg['is_read'] and msg['ROWID'] not in notified:
                logger.info(f'pushing notification for {msg["ROWID"]}')
                notified.add(msg['ROWID'])
                try:
                    requests.post('https://api.pushover.net/1/messages.json',
                                  data={
                                      "token": "token",
                                      "user": "user",
                                      "message": "msg",
                                      "title": "tit"
                                  })
                except:
                    logger.exception('encountered:')
                continue
            if msg['is_read'] and msg['ROWID'] in notified:
                logger.info(f"removing {msg['ROWID']} from notified msgs")
                notified.remove(msg['ROWID'])
                continue
        time.sleep(5)

finally:
    conn.close()