"Generous" means a willingness to give more than necessary or expected. The opposite would be someone who does not care much, hence, "indifferent" fits well. "Sympathetic" is a positive attribute and does not provide a contrast to "generous." "Nasty" and "mean" both imply negative attitudes that are not direct opposites of "generous" as they suggest active unkindness rather than a lack of concern.