Solved, with the help of Reddit user LithiumFrost. In brief, the solution was to configures JACK declaratively via Nix, under Pipewire, and to not ask for a latency below what my computer can handle (128/48000).
Note that this config renders exactly some of QJackCtl’s controls useless. In particular, QJackCtl still can control the signal graph, but it cannot control the buffer size. (This can be verified by running jack_bufsize
in the shell after supposedly changing it in QJackCtl.)
Here are the Reddit thread[1] and my config as of the commit that got it working[2].