#!/bin/bash
# Hace que un drop-in de una unidad de SESIÓN entre en vigor al instalarlo.
#
# El problema, visto en la estación: filmos-system trae un ajuste de prioridad
# para `filmos-vault.service`, que es una unidad de sesión. El postinst recargaba
# el gestor del SISTEMA, que no tiene nada que ver, así que el ajuste se quedaba
# escrito en el disco y sin efecto hasta el siguiente inicio de sesión. systemd
# lo dice —«drop-ins changed on disk»— pero eso solo lo lee quien mira.
#
# Y sí importaba: el día que la máquina se ahogó, el vault estaba compitiendo de
# igual a igual con el escritorio porque su CPUWeight nunca llegó a aplicarse.
#
# Nunca falla: un enganche de apt que devuelve error convierte una actualización
# normal en un susto.
set -u

command -v systemctl >/dev/null 2>&1 || exit 0
command -v loginctl >/dev/null 2>&1 || exit 0

for candidato in \
    $(loginctl list-sessions --no-legend 2>/dev/null | awk '{ print $3 }') \
    $(loginctl list-users --no-legend 2>/dev/null | awk '{ print $2 }'); do
  quien="$(id -u "$candidato" 2>/dev/null)" || continue
  [ -n "$quien" ] && [ "$quien" -ge 1000 ] 2>/dev/null || continue
  [ -d "/run/user/$quien" ] || continue

  runuser -u "$candidato" -- env "XDG_RUNTIME_DIR=/run/user/$quien" \
    systemctl --user daemon-reload >/dev/null 2>&1 || true

  # Y que el servicio recoja el ajuste sin esperar a un reinicio. `try-restart`
  # no arranca lo que estaba parado: si alguien lo paró, sigue parado.
  runuser -u "$candidato" -- env "XDG_RUNTIME_DIR=/run/user/$quien" \
    systemctl --user try-restart filmos-vault.service >/dev/null 2>&1 || true
  break
done

exit 0
