So far it was perfect to have the immutable default config in the store and
reference it for your own
settings. Especially after a breaking change in pipewire, this immutable config
in the store path can be
very valuable to get a working setup again.
I do not care what the default config directory is, but i would like to keep
the default config as part
of the package.
BR
You don't need to worry about that because the default config is in share/ not
etc/. There is nothing in the etc/ besides ld.so.cache
This is how pipewire accesses config without sysconfigdir set:
b@jiu ~/code/guix [env]$ strace
/gnu/store/kvyhx5i5a6i63iihp20wj3yikhvf4si7-pipewire-0.3.48/bin/pipewire
2>&1|rg '^access'
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
access("/home/b/.config/pipewire/pipewire.conf", R_OK) = -1 ENOENT (No such
file or directory)
access("/home/b/.config/pipewire/pipewire.conf", R_OK) = -1 ENOENT (No such
file or directory)
access("/gnu/store/kvyhx5i5a6i63iihp20wj3yikhvf4si7-pipewire-0.3.48/etc/pipewire/pipewire.conf",
R_OK) = -1 ENOENT (No such file or directory)
access("/gnu/store/kvyhx5i5a6i63iihp20wj3yikhvf4si7-pipewire-0.3.48/share/pipewire/pipewire.conf",
R_OK) = 0
access("/gnu/store/kvyhx5i5a6i63iihp20wj3yikhvf4si7-pipewire-0.3.48/share/pipewire/pipewire.conf.d",
R_OK) = -1 ENOENT (No such file or directory)
access("/gnu/store/kvyhx5i5a6i63iihp20wj3yikhvf4si7-pipewire-0.3.48/etc/pipewire/pipewire.conf.d",
R_OK) = -1 ENOENT (No such file or directory)
access("/home/b/.config/pipewire/pipewire.conf.d", R_OK) = -1 ENOENT (No such
file or directory)
access("/home/b/.config/pipewire/pipewire.conf.d", R_OK) = -1 ENOENT (No such
file or directory)
setting it just makes it do this:
b@jiu ~ [env]$ strace pipewire 2>&1|grep '^access'
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
access("/home/b/.config/pipewire/pipewire.conf", R_OK) = -1 ENOENT (No such
file or directory)
access("/home/b/.config/pipewire/pipewire.conf", R_OK) = -1 ENOENT (No such
file or directory)
access("/etc/pipewire/pipewire.conf", R_OK) = -1 ENOENT (No such file or
directory)
access("/gnu/store/p7wpq9axacrzk43whbvg6r4f3v0bkyvz-pipewire-0.3.48/share/pipewire/pipewire.conf",
R_OK) = 0
access("/gnu/store/p7wpq9axacrzk43whbvg6r4f3v0bkyvz-pipewire-0.3.48/share/pipewire/pipewire.conf.d",
R_OK) = -1 ENOENT (No such file or directory)
access("/etc/pipewire/pipewire.conf.d", R_OK) = -1 ENOENT (No such file or
directory)
access("/home/b/.config/pipewire/pipewire.conf.d", R_OK) = -1 ENOENT (No such
file or directory)
access("/home/b/.config/pipewire/pipewire.conf.d", R_OK) = -1 ENOENT (No such
file or directory)
So it allows for global config to be set in /etc without PIPEWIRE_CONFIG_DIR.
Note that PIPEWIRE_CONFIG_DIR isn't practical as a default
because it sets the /only/ config dir and prevents any lookup in home .config.