Not sure where your problem is. I run gitlab with mattermost and docker registry with my own nginx that also servers a lot of other stuff. You can disable the internal nginx for all application in gitlab.rb and you find the nginx.conf files in the gitlab-omnibus repository. It's not one-click but but it's pretty much more than I have hoped for.
It's also pretty self-contained you don't have to care about ruby and rvm and stuff like that, daemons are supervised with runit. I don't see why you have the need to switch versions on that.
Even if you want to modify it, it's probably easier to maintain a fork of the chef-cookbooks and apply local changes to that.
I'm not saying it couldn't be better but for opensource software it's quite well managed and packaged and documented, at least in my opinion.