If you use nixos-generate-config to generate your initial configuration, what you get is almost good enough to boot. You need to add or change a few lines.
The boot.loader.grub.device entry should read:
boot.loader.grub.device = "/dev/xvda";
And the following two lines insure that the serial console is used:
boot.loader.grub.extraConfig = "serial --unit=0 --speed=115200 ; terminal_input serial console ; terminal_output serial console"; boot.kernelParams = ["console=ttyS0"];
You'll probably want to add static addresses for your network interface. If you want IPv6, you'll have to add static addresses, since we don't have autoconfiguration.