deploy to sandbox, virtualbox o cloud instance is just a small change of ip address in Ansible.
This is convenient, but in my point of view it's not really important. The way nixOS provisions new system is great, there is no doubt about that. But the process of making an immutable system to me, it's a bit tricky.
In nixOS, for now you cannot debug a provisioned system without doing it "properly". And it takes time. It would be great if nixOS has debug mode for nix package manager, I think it's not so hard.
For Ansible (and etc ..), you can debug and note it down, then change the playbook, destroy the old one and up new one. It may cost the same time.
However, nix still still really useful even when you have immutable servers. Once the components of an app are described as nix packages you have a lot of flexibility in working with them:
..all from the same package descriptions. I've found it really valuable to have a precisely-defined and exactly reproducible environment for my code, whether in development, testing or production.