It's been through a few iterations with size adjustments and small mechanical tweaks, but it works well and I have now made four of them.

Rear view, on Side view Partially assembled

Partially assembled Three lamps together

I was also toying with the idea of putting a micropower LED blinker in the assembly, so I printed this one with a clear middle section:

Lamp stalk with clear section

And now the OpenSCAD:

All of these need some OpenSCAD libraries to use.