If he has only a small range of food he likes, that is okay, but that have to be healthy ones. I would not make chicken nuggets and chips any more, tell him you can't buy them again, they are not healthy. If the things you DO have the the house are things you are happy for him to eat, you will stress less. We have a very picky 3 year old here, too.
One thing that IS odd. Something they didn't eat a week ago can be tasty for them now. The buds change every few days or something, so keep offering. Also, if the kid can help, if the colours are nice, he will eat.
we do this now:
Breakfast: sandwich or yoghurt, he chooses (and buys the previous day) the kind of yoghurt and the filling for the sandwich.
Snack: PLate of vegetables, again, bought by him (nursery does that, too, they go shopping with the kids) all cut up nicely. Peppers, radish, cucumber, baby tomatoes, that stuff.
Oh, and NO non-veg snacks, no milk between the meals.
Lunch: at home he can choose, we do it together, he helps if that is possible. As he won't eat soups it's usually something like a sandwich and some potato salad, or boiled eggs and toast, that stuff.
Snack: this can be junk. Whatever he likes. ATM strawberries are his fav choice here, but cake or biscuits are also fine.
Dinner: Cooked meal that the family eats. What we do is letting him dish out, choose what he wants and only ask if he wants this or that. We don't persuade him to put things on his plate, but ask him if he wants to taste from our plates which he usually does and then it's a yes or a no. We also watch to make things with a few pots, not too many stews and stuff where it's all mixed together.