Supondo que você use o gdm como gerenciador de login,
[Unit]
Description=setup script
Before=gdm.service
[Service]
Type=oneshot
ExecStart=/my/setup/script
[Install]
Se você não usa o gdm, descubra qual serviço inicia o xorg e coloque-o na linha Before=
.
Explicação: Ocorreram dois problemas: 1. no seu caso default.target
é provavelmente um link simbólico apontando para graphical.target. então Wants=default.target
indica que deve ser iniciado após o alvo gráfico 2. Before=default.target
não funciona: Os alvos são usados para reportar ao systemd quando certos estágios no processo de inicialização são finalizados iniciando, não quando eles começam a ser carregados. Portanto, usar um alvo só faz sentido se você quiser iniciar algo após que a meta foi atingida não antes ou se quiser ter certeza de que a meta só será atingida quando o serviço terminar de carregar.