It's on my computer right now but it's not all that friendly, and there's a specific path that I do currently.
I'll add some stuff and then release it in this thread and will explain what I do.
UPDATE:
1. You can play with the code to make it do stuff specifically look for "customset" variable.
But here's what I have, I have a file opened that has bottom layer as my background, it has shadows dropped because I wanted shadows you don't have to
The image is (1024+100) square 100px is room for the shadow that's already dropped.
Then on top of that background layer I have layers I use for threads like sewn look, that's just specific to my case.
But plug-in will basically copy the layer that you run it on (so have the bottom most layer active when run plug-in). It'll then fill each copy with a random pattern which are controlled by customset variable which is an array/list of indexes pointing to the patterns you want.
Then it'll pick a random layer from your image (ignoring the bottommost layer since that's the background layer that we're filling with).
The below image is included in the zip along with the plug-in .py file.
2. Pick the background layer (bottommost), run plug-in on that (I know it says Sheared Brushes instead of Patterns but because before this version I was playing with brushes (which code is present but commented out in the plugin).
3. Changing settings as needed. You should change the first 2 settings to your desired size (should be larger than your original image that you're working from since we're tiling them into a larger piece). The other settings can be played with but are okay for the dimensions of example files I am running. Like min and max sheared are in pixels which can be changed if you want to scale down your original to have a smaller pattern. If it was me I would just run it as is then when it's done, you can scale down the finished pattern.
Here's a teaser using reds and white patterns: