Muitas informações de fundo, TLDR no final
Estou usando o NixOS e, para tornar meu sistema declarativo, criei um link ~/.config/monitors.xml
para um arquivo que mantenho na minha configuração, assim:
systemd.tmpfiles.rules = [ "L /home/thomas/.config/monitors.xml - - - - ${pkgs.writeText "thomas_monitors.xml" "${builtins.readFile ./monitors.xml}"}" ];
Este atributo adiciona uma tmpfiles.d
regra para vincular /home/thomas/.config/monitors.xml
a um arquivo armazenado no repositório Nix contendo o conteúdo de <my nixos configuration directory>/monitors.xml
.
Entretanto, ao olhar meu .config
diretório, percebi que monitors.xml
era um arquivo normal, não um link.
Os serviços systemd-tmpfiles-setup.service
e systemd-tmpfiles-clean.service
são executados em cada inicialização de acordo com systemctl status
, então sei que ele deve estar tentando fazer o link simbólico, mesmo que ele não esteja sendo feito.
Quando eu diff ~/.config/monitors.xml
com o monitors.xml
na minha configuração, não há diferença, então meu melhor palpite é que o Gnome de alguma forma percebe quando o link é feito e o substitui pelo arquivo ao qual ele está sendo vinculado?
Alternativamente, talvez systemd-tmpfiles
não esteja fazendo o link, e o que monitors.xml
está lá atualmente é gerado pelo Gnome e acontece de ser o mesmo que eu defini na minha configuração? Se for esse o caso, há uma maneira de forçar systemd-tmpfiles
a fazer o link?
Também tenho duas outras tmpfiles.d
regras para monitors.xml
, uma para vinculá-lo a /run/gdm/.config/monitors.xml
e outra para vinculá-lo a /root/.config/monitors.xml
, que estão vinculando o arquivo corretamente. A única que não está funcionando é ~/.config
.
Além disso, /home/thomas
é meu diretório home, assim /home/thomas/.config
como ~/.config
. Eu sei que esse não é o problema.
Resumo:
Por que o ~/.config/monitors.xml
symlinked não está no arquivo que eu quero que ele esteja? O Gnome está removendo o link? Ou, se systemd-tmpfiles
não estiver fazendo o link por algum motivo, como faço para forçá-lo?