> the split between /usr/local/etc and /etc constantly leaves you guessing where to find a particular config file;
Isn't it just that /etc is the base OS and /usr/local is all packages added on top?
The base/packages split is one of the main reasons why I appreciate the BSDs (that includes macOS). However /usr/local/etc in particular violates several assumptions:
- I can make /usr read-only, exclude it from backups, put it on an NFS share, or otherwise treat it as immutable during normal operation;
- I can nuke /usr/local any time, fall back on the base system, and reinstall packages from there;
- I can put /etc in version control and track all configuration changes;
- I don't need to think whether to look for /etc/nginx or /usr/local/etc/nginx, this also simplifies automation like scripts or Ansible roles; etc
Notably, OpenBSD takes the effort to ensure all packages install their configs in /etc.
I don't think those first two are violated? I'm pretty sure you can make /usr read-only, mount it from a shared source, and nuke /usr/local at will. I do agree that splitting config files by base and not-base means there are two places, but given this particular system design it seems like a bad assumption rather than a bad design.
Symbolic links can be made, but test test test and make sure anyone else administering that host knows exactly what has been linked and why. Purists might scream, but its none of their business if it doesn't get in anyone else's way.