Eu encontrei a resposta: eu precisava mudar a última linha do arquivo de serviço para:
WantedBy=postgresql.service
Dessa forma, sempre que o Postgres é iniciado, meu serviço também é iniciado - mas se meu serviço falhar, isso não interrompe o Postgres.
As diretivas na seção [Install]
afetam apenas a habilitação e a desativação de unidades. Mas não foi assim tão simples quando meu serviço já estava ativado:
# systemctl enable tabill.service
Failed to execute operation: Too many levels of symbolic links
A mensagem de erro foi enganosa. Consertar isso foi simples:
# systemctl disable tabill.service
Removed symlink /etc/systemd/system/tabill.service.
Removed symlink /etc/systemd/system/multi-user.target.wants/tabill.service.
# systemctl enable tabill.service
Failed to execute operation: No such file or directory
# systemctl enable /srv/tabill/tabill.service
Created symlink from /etc/systemd/system/postgresql.service.wants/tabill.service to /srv/tabill/tabill.service.
Created symlink from /etc/systemd/system/tabill.service to /srv/tabill/tabill.service.
Agora meu serviço para e começa sempre que o Postgres o faz. E, naturalmente, o Postgres é iniciado quando o sistema inicializa.