That's the tricky part; not sure how to find the derivation path. Is the "fresh address path" (shown in the step 3 image from the link above) the same as the derivation path?
Almost. Take the fresh address it path it shows you under your xpub and knock the last two sets of digits off it to get the derivation path for your xpub. So if it shows m/84'/0'/0'/0/5, your xpub's path will be m/84'/0'/0'. Make sure to include the ' symbols, these are very important and will generate entirely different keys if you miss them out.
The last thing to be sure is that this xpub is definitely coming from the account protected by the passphrase, and not from the base account with no passphrase.
It's either one of these lists, or a combination of both. If separate, I'm confident of the order but yet it didn't work so something is off.
If the order is off, then you are really going to struggle. Based on your initial post of 15-20 words, and the fact that I can descramble 12 words in a little under an hour, then 15 words would come out at around 100 days and 20 words will be in the region of hundreds of thousands of years, even assuming you were 100% correct with all your words and symbols.
So, assuming you know the order, then I would try something like this initially:
^1^Code ^1^code ^1^C0de ^1^c0de
^2^test ^2^te$t
^3^mayor ^3^m@yor ^3^may0r ^3^m@y0r
And so on.
The ^x^ before each word fixes the position of that word. btcrecover will then take one entry from each line and assemble that in to a passphrase in that order to try. So on each line, you put every possible permutation of that word. This is also assuming no spaces between the words.
If that fails, then change your tokens file to all caps.
If that fails, then take your second wordlist (e.g. veg instead of fruit) and follow the same process.
If that fails, then combine your wordlists and follow the same process.
Note that if $ is the last character of a token, you will need to replace it with %S otherwise btcrecover will interpret it as an end anchor.
In terms of the numbers at the end, you can do what you are doing and put every possibility on a single line with $ at the end, or you can use a wildcard if you are unsure about the numbers. For example, %3,4d will try every 3 and 4 digit combination. Note that this will significantly increase your search space, however.
Thank you! For the derivation path, being a native segwit wallet, wouldn't it always be m/84'/0'/0'?
I've tried the combinations but need to narrow it down more I guess. I realize I may have used the wrong address limit now so while that was a waste of time, there is hope I find the right one now.