Certamente, existe um caminho. systemd suporta a especificação de "dependências de ordenação" entre pares de unidades que fazem com que systemd sigam uma certa ordem mútua quando essas unidades são ativadas / desativadas em uma única transação.
Em systemd.unit (5) :
Before=, After=
A space-separated list of unit names. Configures ordering dependencies between units. If a unit foo.service contains a setting Before=bar.service and both units are being started, bar.service's start-up is delayed until foo.service is started up. <...> Note that when two units with an ordering dependency between them are shut down, the inverse of the start-up order is applied. i.e. if a unit is configured with After= on another unit, the former is stopped before the latter if both are shut down. <...>
Então, você quer que vmware.service seja desativado (parado) antes que gdm.service seja interrompido. Pelo exposto, pode ser obtido adicionando uma dependência de ordem After=gdm.service à unidade vmware.service .
Para evitar a cópia de toda a unidade para /etc/systemd/system , você pode querer usar o mecanismo de drop-ins (veja" exemplo 2 "). Você precisa criar um arquivo chamado /etc/systemd/system/vmware.service.d/<some name>.conf apenas com as diretivas e cabeçalhos de seção necessários:
[Unit]
After=gdm.service
Depois de fazer isso, emita um comando systemctl daemon-reload para fazer systemd reler as unidades. No desligamento, a nova lista de dependências deve se tornar efetiva.