To combat that, maybe you should make a list of what you're gonna do the next day to prepare your day and set an alarm to wake up. Then, as you visualise the future you, you can adapt your scheduling of the night and go to bed at the best hour for you.
I used to have the same problem, and I think the best solution is to actually put restrictions to those things that distract me when trying to sleep. In my case it was my phone so I set it to automatically turn the screen to black and white and deactivate all notifications (except for calls) after 11pm. What also helped me was to set a routine that was pleasant but wouldn't make me stay up late before bedtime, for me it was reading, meditation and breathing didn't work for me because I would get bored and start doing something else, so you will have to experiment. Lastly, I would say to not be so hard on you, everyone slips off one or two times… Sometimes I just fail in something and I stop trying while I fall in a deep circle of guilt, but that doesn't serve any purpose. The important thing is to get back on track as soon as possible.
Try to put your goals in the mornigs. Try to have different plans, try to shift the activities you usually have in the weekend evenings and night, to the mornings. Try to do, in the mornings, something new and appealing, fun and that involves others. 🙂