The podman network create defaults include DNS, so if you don’t hand-craft a json for it that isn’t necessary. In the docker world this interface doesn’t exist at all, but now we know this is about podman that’s a bit easier 
That’s… Odd. Are you sure? This smells like an upstream bug, might be worth reporting. You’re sure this is not caused by adding that dns_enabled? It may actually pass all DNS requests to your host DNS server, but it’s not documented anywhere, so who knows…
Pods effectively work the same as the rest of the podman container infrastructure, the only difference is that you can more conveniently configure a little group of containers like this.
There also is no integration for them in NixOS yet, if you’re interested I have an old module that needs updating, refactoring, and perhaps upstreaming, but could be used to run pods fully from NixOS configuration: tlaternet-server/modules/virtualisation/pods.nix at b6f39969cc50293b6dce493ef3273bc0573939f5 - tlaternet/tlaternet-server - Forgejo: Beyond coding. We Forge.
I suppose this could also be done with JSON files, but I prefer sticking to the more cleanly documented API.
Used e.g. like so for nextcloud: tlaternet-server/configuration/services/nextcloud.nix at b6f39969cc50293b6dce493ef3273bc0573939f5 - tlaternet/tlaternet-server - Forgejo: Beyond coding. We Forge.
Ultimately it’s just prettier though, there should be little real difference.
There is currently no services.podman.networks option or anything like that in NixOS. However, podman supports writing these json files to create networks instead, which makes things easier.
There is scarce documentation for this (which I believe to be the only official reference), so use at your own peril. It should still be relatively stable, as this is used to keep track of state internally, and non-podman sources (such as oracle’s documentation) do mention it, so it needs to be upgraded with podman anyway.
This is also why things like the id are hard to find explanations for, but you’ll probably find that id is just a generated string used for internal uniqueness and identification (generally what IDs are for).
You probably shouldn’t change the ID after you’ve started using it, but the NixOS config sets up a network with the id 000000000..0, so I don’t believe the actual string matters, as long as it’s hexadecimal with the same number of digits: nixpkgs/nixos/modules/virtualisation/podman/default.nix at 9a74ffb2ca1fc91c6ccc48bd3f8cbc1501bf7b8a · NixOS/nixpkgs · GitHub
The question remains though, why is the network not found? While I agree you should be using double quotes, that clearly has no effect, otherwise this message would be impossible:
It shouldn’t matter because of the shell escape things in NixOS’ modules; except if the evaluated network name is actually lavalink\n.
With the environments.etc config, that lavalink.json file should now exist. What does cat /etc/containers/networks/lavalink.json give you? Would be nice to compare it to podman network inspect lavalink, to check the network is actually properly set up according to podman too.
And try a cat /etc/containers/networks/podman.json while we’re at it, if that file exists no podman networking should be working, and something is going horribly wrong with your NixOS activation.
You’re using nixos-rebuild switch, and not boot or build or something, right?