I am always looking at other open source engines for inspiration for my own. Some of the ones I've found easiest to follow are: Godot, Atomic and Banshee. I can't really speak to their modularity other than to say that my experience in following their code is pretty easy since it seems fairly self contained. Hopefully that's a start? Good luck!
https://luxeengine.com seems interesting but unreleased
https://github.com/AtomicGameEngine/AtomicGameEngine/blob/master/README.md similar to godot
https://github.com/oxygine/oxygine-framework very small userbase but you can make a game in C++, not a weird scripting language.
It's less about combination and more about not copy/pasting the same code. All shaders have the same structure and many of my shader share similar inputs. Attributes like vertex_position, vertex_normal, vertex_texcoord0, uniforms like mvpMatrix and modelViewMatrix, and outputs (color, depth). Additionally, functions like lighting calcs are used in both static meshes, animated meshes (which also contain bone data) and billboards. Again, taking a look at the Atomic Engine GLSL shaders gives you an idea with all of the transform, defines, etc. Writing individual shaders is a perfectly valid strategy, it just feels messy and unmaintainable when you start to get to two or three dozen plus shader files.
They don't provide pre-compiled binaries for Linux, but they do include build instructions for it, so presumably they intend it to be usable: https://github.com/AtomicGameEngine/AtomicGameEngine/wiki/Building-the-Atomic-Editor-from-Source