In nix, you're basically describing the whole dependency tree of your application all the way to libc. When you build your application it builds everything necessary to run it.
The great thing about it is that your CDE essentially is identical to your build system, and the builds are fully reproducible, it takes over being a build system, package manager and as mentioned CDE.
They went even further with that (I have not explored that myself yet) and used the language to describe the entire system (called NixOS) which looks like CMS is no longer necessary and also nix is used for deployment (NixOps, also did not tried it)
If you are into containers you can still deploy into systemd lxc containers, or even create a minimalistic docker image.
The disadvantage is that there is a significant learning curve, it's a new language, and it is a functional, lazily evaluated language. The language is not really that hard, but many people are not used to functional programming. It is especially popular for deployment of Haskell code, since the language is also functional and lazily evaluated.
We have been working on Flockport [1] that supports LXC containers and provides orchestration, an app store, service discovery and repeatable builds. It's still in early preview and we have not started proper outreach but it may be worth looking at.
Ubuntu also provides the LXD project that provides some orchestration across servers.
It's seems possible to get IPv6 working through alternative orchestration though. eg Theres a guide on getting it working with Kubernetes and Calico.
But if you're looking for something that's production grade IPv6 - eg people can work out WTF is wrong when problems hit - it's probably not there yet. At least, not for small teams that I can tell. ;)