I worked on a similar scenery and solved it mostly by tone curves and colour zones.
This is my start image. It was a jpeg taken handheld with a Canon EOS 80D and Tamron 18-400 3.5-6.3/f - 1/60 seconds exposure - 3.5/f - 4000 ISO

Definitively, I didn't go the easy way on it, but I think it might be useful to know some useful darktable's modules.
(Exposure and denoising corrections hace no images as I'm not allowed to publish more than 8 links)
At first, I used zones system to ligthen zones close to black that I wanted to be seen. Specially the reflections on the ground.
When doing so, iso noise became quite noticeable
I first tried profiled denoising.
Then I added bilateral denoising focused on green, to erase green dots and make the reflections look more "purple"
So now, we can start playing with colour. First, I added a tone curve module active on b channel for making blue deeper

Then, i made a new instance of tones curves, just for comfortably seeing before-after changes. Un this module I'll modify a channel. At first, I want to localize in the curve the average tone I'm looking to modify. I can do it by upper right colour picker.

Then, I'll set a parametric mask to isolate the blueish tones I want to transform. Note that the mask is set to visible (down right corner of the module).

Then, I changed most of the a curve to greenish lower values. The center keeps in its place to preserve white light.

So, I added a colour correction module on a two parameters mask. One parameter was almost the same that the one shown before, and the second parameter, on l channel, was set to prevent the white lights from resulting coloured.


Finally, I went into colour zones module and made the fine adjustments. I intentionally exaggerated some green to make changes more visible on this tiny screenshot.

It's still pending to match that soft glow you add to your lights. There are probably many ways to achieve it on darktable.