Here’s another method of making seamless pattern textures. It uses RBDs scaling up to create an initial packing. Then finds shapes that overlap with the edges, copies them across to the other side and pins them. Then the internal shapes are scaled up again to resolve any intersections caused by the duplication.
Its not robust, there might be a bit of tweaking of the texture afterwards, but it works pretty good.