Lunes por la manana: doble mininfarto (XMonad + VPN)
Lunes. 8:47 AM. Cafe en mano. Dos infartos antes de las 9.
Infarto 1: XMonad no arranca
SDDM muestra el login. Pongo el password. Enter. La pantalla se queda negra con una X de raton. XMonad no arranca. No hay escritorio. Nada.
Que paso
El fin de semana fue productivo. Demasiado. Entre rebuilds, deploys, headscale, tailscale, retropix, y un flake update, algo se perdio: el binario compilado de XMonad.
XMonad busca su binario en ~/.cache/xmonad/xmonad-x86_64-linux. Si no lo
encuentra, la sesion muere silenciosamente. SDDM te devuelve al login
como si el password estuviera mal. Sin error, sin log, sin pista.
Teniamos un hook en home-manager que recompila en cada rebuild. Pero
tenia un bug: comprobaba $DISPLAY antes de
compilar. Si el rebuild se ejecuta desde SSH (sin X11), la compilacion
no se ejecuta. Exactamente lo que paso este fin de semana.
El fix (2 minutos)
$ xmonad --recompile
XMonad recompilation process exited with success!
$ sudo systemctl restart display-managerHook corregido: ya no comprueba $DISPLAY. xmonad --recompile solo necesita GHC, no un
display.
De mininfarto a "arreglado" en 2 minutos. Sin foros, sin probar cosas a ciegas. Diagnostico, fix, commit, nunca mas.
Infarto 2: la VPN de Vocento no resuelve DNS
9:15 AM. Abro el PR urgente de Bitbucket. bitbucket.vocento.com: Name or service not known.
La VPN de Vocento (Ivanti) esta conectada pero no resuelve dominios
internos. Sin esto, no puedo currar.
Que paso
El sabado montamos Headscale (servidor Tailscale self-hosted) para la
mesh VPN del multiverse. Tailscale tiene una feature llamada MagicDNS
que secuestra /etc/resolv.conf y redirige
TODO el DNS a su propio resolver (100.100.100.100).
ANTES (funciona):
/etc/resolv.conf → 192.168.53.12 (VM Ivanti, resuelve *.vocento.com)
DESPUES DE TAILSCALE (roto):
/etc/resolv.conf → 100.100.100.100 (Tailscale, NO resuelve *.vocento.com)
La VM de Ivanti estaba perfecta. La VPN conectada. Pero Tailscale le habia robado el DNS sin avisar.
El fix
Dos cambios:
--accept-dns=falseen todos los nodos (modulo tailscale.nix). Tailscale NUNCA toca resolv.conf.magic_dns = falseen el servidor Headscale. El servidor tampoco intenta gestionar DNS.
# modules/services/tailscale.nix
services.tailscale.extraUpFlags = [ "--accept-dns=false" ];
# hosts/cohete/default.nix (Headscale server)
services.headscale.settings.dns.magic_dns = false;Commit con titulo CRITICAL. La VPN de
Vocento es sagrada. Nada la toca.
Leccion aprendida
Tailscale es un gran software. Pero como todo software que "sabe lo que te conviene", a veces te jode. MagicDNS es una feature pensada para redes simples. Si tienes una VPN corporativa con DNS internos, MagicDNS te destruye el dia.
La regla: si un servicio toca /etc/resolv.conf sin que se lo pidas,
desactivalo inmediatamente.
Lo que se actualiza hoy
Ademas de los fixes, el flake se actualiza con 6 dias de cambios:
| Input | Antes | Despues | Que trae |
|---|---|---|---|
| nixpkgs | 01 abril | 09 abril | 8 dias de paquetes + security fixes |
| nixpkgs-master | 06 abril | 13 abril | Ollama 0.20.2, claude-code, bleeding |
| nixos-hardware | - | 06 abril | Perfiles hardware actualizados |
| nixos-raspberrypi | 16 marzo | 10 abril | Device tree overlays para Pi 3 |
Final feliz
Rebuild OK. XMonad compila. VPN funciona. DNS blindado. Tailscale sin tocar DNS. Todo commiteado y pusheado. Cafe aun caliente (el segundo).
Dos infartos, dos fixes, todo antes de las 9. A currar.
Comentarios (0)
Sin comentarios todavia. Se el primero!
Deja un comentario