So in trying to figure out why my pavucontrol is missing an icon, I learned a lot about how icon themes work today!
First, it seems that if your system is using dconf, #GTK 4 will only observe the value you see when running:
dconf read /org/gnome/desktop/interface/icon-theme
You can change it using:
dconf write /org/gnome/desktop/interface/icon-theme "'name-of-theme'"
(That's single quotes inside double quotes!)
This even seems to work while the application is running! :O
But where will GTK look for a theme of this name?
The answer is given in the freedesktop.org Icon Theme Specification! https://specifications.freedesktop.org/icon-theme/latest/
It will look in $HOME/.icons, all entries $XDG_DATA_DIRS (in the subdirectory icons/), and in /usr/share/pixmaps/.
It looks for subdirectories of the icon theme name you've set, and merge all contents it finds.
The $XDG_DATA_DIRS mechanism is especially important on #NixOS, because it allows you to dynamically reference the available themes there!