The point of shader nodes was to include or not include the code as needed… not to wrap it all with ifdefs.
The easiest approach for the artist in your case is just to give them a bunch of parameters they can set on your super-shader. You’ve effectively removed all useful configurability anyway.
I think at this point, your goals are sooooo far off the original goals of shader nodes that you might as well write your own from scratch. We wanted to avoid giant shaders like Lighting.j3md. You want to slip back in that direction because monolithic giant nodes are “non-technical artist friendly”. This we never our goal. Never. Not once… ever ever. Never. Not ever. In fact, a node editor was never even in the original plan. Just an ability to wire up shaderlets into something that could be easily reconfigured to avoid having to fork ALL of lighting.j3md just to add fog.
You have basically started slipping back in that direction.
Artist: "How do I had fog?"
Developer: “Oh, wait… I need to code that into the giant fragment node… one sec… oh, wait, I also need to add something to the giant vertex node…”
…and now if there are any problems, you get a giant debug output of the 9000 line shader full of stuff not even used.
…and then this directly impacts the community as we have to sort out this strange horse shit when it’s posted to the forum.
Anyway, one of the side-effects of shader nodes was that you now have a place to plugin your own shader generators (because I requested it… so I hope it’s really there… I had my own shaderlets idea for a long time). So just go your own way, I guess. You won’t be getting any use out of our modular nodes, anyway since they likely won’t wire into your giant two nodes.