This is how I do it:
When a computer comes and it turns out the hard drive need to be replaced, I give the customer 2 options, and in both options the labor for swapping the drive, installing OS, and data backup/restore if necessary. The difference is this:
1. They buy the hard drive for me at retail cost ( of course I made some markup $ when selling the hard drive) and I add a $30 charge. I explain that in case the hard drive dies before one year, all they would need to do is drop off the machine, and I will have it ready the next day, I would deal with the RMA, and labor cost would be included, so no additional cost to them.
2. If they want to shop around for the cheapest drive in town, and they go buy the drive and bring it to me, then they just pay me fpr swapping drive, install OS and whatever else I do, and I explain that in case a problem arise, they should save the receipt because they will be dealing with best buy or whatever the drive came from. I don't make money on marking up the drive, and no additional $30 charge, so if all works out, they saved money, but if the drive fails anytime after they get the computer back, and they manage to get a replacement hard drive, if they come to me to do the new swap, it will be like a new job, and full normal rates will apply
Most of my customers decide to let me handle it, and when things go smooth, I made some extra money, which makes up for the very few that comeback.
I hope this makes sense