意外と情報がなかったので後世のために記す。
react-gtm-module というライブラリにお世話になった。
使わない場合は _document.js に dangerouslySetInnerHTML したりでもいける。はず。
Next.js での設定
まず npm install react-gtm-module --save か yarn add react-gtm-module する。
そして _app.tsx に次のコードを埋め込む
import TagManager from 'react-gtm-module';
class MyApp extends App {
  componentDidMount() {
    // gtmId に自分のGTMアカウントのID入れてください
    TagManager.initialize({ gtmId: 'GTM-XXXXXX' });
  }
  render() {
    。。。
  }
}
これでタグは配信されるようになる。
が、これだけだとクライアントサイドルーティングのPVが計測できない(History APIで更新しているだけなのでタグが発火されないから)。Next.jsを使っていると基本的にユーザの元に届いた時点でSPAとして振舞うようになると思うのでそれに対策する必要がある。
GTM上でページ遷移時のPVを取るためのトリガーを作る
「履歴の変更」というトリガーを仕込んであげるといい。
https://support.google.com/tagmanager/answer/7679322?hl=ja
 
これで公開して GTM のプレビューで見ると History というイベントが計測されていることを確認できる。

