Way to adapt shaders to different hardware?

I need to find a clean way to manage the different hardware spec (nbr of tex units, nbr of combiners, extensions, …) for my shaders. I’m using a limited number of ‘profiles’ (ex: 2tex/4combiners, 4tex/8combiners/vertex programs, …) but that solution deos not really satisfy me.

Well no one else really likes it either. So untill then he have to make separate rendering backends for each kind of ‘profile’ as you say. OpenGL 2.0 should help a lot, hopefully.