If he's eating those things at school, it's because it's expected and it must not be expected at home. That being said, it's hard when you are the mom to listen to them yell and scream, but truly, if you are firm, he should start eating better at home too. One trick I tried when mine were little was to put something I knew they would eat, in your case, mac and cheese, but also put the fruit or veggie that you want him to try on the plate. He may eat all the mac and cheese, that's fine, but no more mac and cheese unless he at least tries the other food on his plate. This seemed to do 2 things for my kids. One, I knew they ate something, and two, it encouraged them to eat/try the other item without too much of a battle. Try not to make food a battle. With my youngest, who is almost 2 1/2, he can be negotiated with. If he wants another bite of mac and cheese, he needs to eat a bite of X first. That works for him. Good luck! Be firm, but if he doesn't want it, drop it so it's not a battle, but no more mac and cheese unless he tries something else first.