

That is something you can’t quite escape in Nix either. While it doesn’t use parenthesis like a Lisp, the nature of the language and the depths of the sets you are dealing with still makes you end up getting a lot of this at the end of your files:
];
};
};
};
}
Having one }
too many or too few is a pretty common issue with Nix and feels very similar to Lisp, even when the rest of the language is quite different.
You can manage multiple machines with a single Nix configuration git repository and modularize the configuration as much as you want. You can have a config with a desktop environment that you skip on servers, override individual variables for a specific host or do whatever you want. You can even remote deploy it all with a simple
nixos-rebuild build --target-host "user@host"
and it works across different architectures too (e.g. build on your fast x86 machine and deploy to a slow RaspberryPi).