Morph can't create machines for you - it doesn't have any backends except for SSH. It means fewer dependencies but you need to create targets manually or with something like Terraform. I've only used 'libvirt' and 'none' backends with NixOps and even wrote a 'dumb' backend that unlike 'none' backend wouldn't generate and store SSH keys in state but respects .ssh/config.
One feature of morph is really nice - declarative health checks that are run after the deployment automatically or can be triggered manually.
I also find it easier to explain to not-that-technical people as it basically requires one or two commands.
For the reference: https://github.com/DBCDK/morph
Oh, that's really a nice feature! I use NixOps for managing some personal hosts and one work VM, but the local state is annoying.
(also, we're hiring, if anybody interested in nix near Copenhagen is reading this)