commit 83ebc928af788d3849decde84b7b5eeda2b2a3b3 from: ale date: Thu Jul 16 16:23:57 2026 UTC Bluetooth diagnosticado (sin fix necesario), bump noctalia-greeter (segfault de salida), carpetas XDG declarativas journalctl/coredumpctl: BAP/ISO y ruido de reconexión BT son limitación de hardware (AC9560 sin LE Audio) + AirPods desconectados, no bugs. noctalia-greeter: input actualizado a b0735981 como intento de fix del segfault del compositor al salir (sin confirmación upstream todavía, pendiente verificar tras el próximo reinicio real). xdg.userDirs declarado en home.nix (antes las carpetas eran manuales). commit - 9c40aa26671417206b85ce6b036d99b323e871a0 commit + 83ebc928af788d3849decde84b7b5eeda2b2a3b3 blob - e0d1a4e5c11bb083e076ac63819a8d31b0b1a725 blob + 9d91968fb716eceff46b108fcd1dfa7ec5cf9994 --- NOTES.md +++ NOTES.md @@ -933,6 +933,110 @@ autosuggestions (con el bug de orden evitado, ver arri éxito en la máquina real (`nixos-rebuild switch` confirmado por el usuario: `Done.`, sin errores). +## Revisión de logs del sistema: Bluetooth (diagnosticado, no accionable) + segfault de noctalia-greeter en cada arranque + carpetas XDG (2026-07-16) + +### Auditoría de `journalctl` (a pedido del usuario: "revisa los logs a ver cualquier error") + +Revisados `journalctl -p 3 -xb`, `--failed` (sistema y usuario), OOM, +filesystem/disco, y `coredumpctl list` de los últimos 3 arranques. Sin +servicios systemd fallidos, sin OOM kills reales (el ciclo "OOM killer +disabled/enabled" es de suspend/hibernate, no de memoria agotada), sin +errores de disco (`ata5: SATA link down` es un puerto SATA vacío, benigno). +Dos hallazgos reales: + +**Bluetooth — diagnosticado, sin fix de config posible.** Tres mensajes +repetidos en cada arranque/resume: + +- `BAP requires ISO Socket which is not enabled` — el adaptador de esta + máquina (Intel AC9560, integrado con el WiFi) es de 2018, anterior a + Bluetooth 5.2. LE Audio/canales ISO (lo que necesita el perfil BAP) es una + limitación de firmware/hardware del controlador, no algo que un flag de + NixOS o de `bluetoothd` pueda habilitar. No es efecto del flag `-E` + (experimental) que ya tenemos por LibrePods (ver más arriba, "LibrePods + (AirPods)") — BlueZ prueba el perfil BAP en la inicialización del adaptador + sin importar `-E`. +- `Unable to get Hands-Free Voice gateway SDP record: Host is down` y + `a2dp-sink profile connect failed for 14:28:76:C3:CF:FF: Protocol not + available` — confirmado con `bluetoothctl info 14:28:76:C3:CF:FF` que es + el MAC de los AirPods Pro del usuario (`Paired: yes`, `Bonded: yes`, + `Connected: no` en el momento de la revisión). Es `bluetoothd` + reintentando reconectar a un dispositivo emparejado que está apagado o + fuera de rango -- comportamiento esperado, no un bug. Búsqueda en + `github.com/bluez/bluez/issues` encontró issues con el mismo texto exacto + (#348, #351, #1309, #1610) pero sin resolución clara documentada en los + hilos -- no hay parche conocido que aplicar, y dado que + `bluez5.codecs`/el flag `-E` en `modules/desktop.nix` son el resultado de + 13 rondas de diagnóstico en vivo (ronda #13, audio cortado con los + AirPods), **decidido no tocar esa config a ciegas** sin evidencia de que + el cambio resuelva algo real -- el riesgo de re-romper el audio ya + estabilizado supera el beneficio de silenciar un log. + +**noctalia-greeter: segfault en el compositor al salir, en el 100% de los +arranques registrados.** Encontrado en `journalctl -k` (`noctalia-greete[PID]: +segfault ... in libwlroots-0.20.so`) y confirmado con `coredumpctl list` +(4/4 arranques con coredump, mismo binario: +`noctalia-greeter-compositor`, señal SIGSEGV). Contexto exacto del crash +(`journalctl -b -1`, alrededor del segfault): + +``` +[info] session start confirmed, exiting greeter +[info] shutdown complete +kernel: noctalia-greete[PID]: segfault at ... in libwlroots-0.20.so +``` + +El crash pasa **después** de que el greeter ya reportó `shutdown complete` +y entregó la sesión a Hyprland -- es un segfault en la limpieza/destructores +del proceso ya terminado, no algo que bloquee el login (por eso nunca se +notó "a simple vista"). Sin backtrace legible (`coredumpctl` reporta +`COREFILE inaccessible`, sin símbolos de debug en el store). + +Revisado el historial real de `github.com/noctalia-dev/noctalia-greeter`: +el pin en `flake.lock` (`fffc583a`, 12 jul) estaba un día atrasado respecto +a `main` (`b0735981`, 13 jul). Ningún commit en el medio menciona +explícitamente "segfault"/"crash"/"SIGSEGV" (el más cercano, +`fix(compositor): prevent layout operations during shutdown`, es de antes +del pin actual, así que ya estaba incluido y no evitó el crash). Tampoco +hay issues abiertos con "segfault" en el tracker del proyecto. **No hay +fix confirmado upstream** -- la actualización del input +(`nix flake lock --update-input noctalia-greeter`) se hizo como intento +razonable (trae 4 commits nuevos, incluye fixes de compositor/input), no +como solución verificada. + +Build validado con `nix build .#nixosConfigurations.ale.config.system.build.toplevel` +(sin sudo) antes de aplicar. Aplicado con +`sudo nixos-rebuild switch --flake /nixdots#ale` (corrido por el usuario, +`Done.` sin errores) -- pero `greetd.service` **no se reinició** (systemd +lo excluye de los reinicios en caliente de un `switch`, para no cortar la +sesión gráfica activa), así que el binario nuevo de `noctalia-greeter` +recién se usa en el próximo arranque real. **Pendiente: confirmar tras un +reinicio real si el segfault sigue apareciendo** (`coredumpctl +list --since=today` después de reiniciar). Si sigue, hace falta reportarlo +upstream con un backtrace real (requeriría un build con símbolos de debug, +no intentado todavía). + +### Carpetas XDG estándar + +A pedido del usuario ("solo tengo Pictures y Downloads, no recuerdo qué +más"): agregado `xdg.userDirs` en `home/ale/home.nix` (antes no estaba +declarado -- las carpetas que existían se habían creado a mano, sin pasar +por `xdg-user-dirs-update` ni estar en el repo). Nombres en inglés a +propósito (`Desktop`/`Documents`/`Music`/etc., no `Escritorio`/`Documentos`) +para no generar carpetas duplicadas junto a las `Pictures`/`Videos`/ +`Downloads` en inglés que ya existían con contenido real, a pesar de que el +locale de la máquina es `es_MX.UTF-8`. + +De paso se destapó una carpeta `Descargas` (con "s", duplicado en español, +vacía) que ya no existe al momento de aplicar el cambio -- el usuario debe +haberla borrado por su cuenta entre la revisión de logs y este cambio; no +hizo falta lidiar con un merge de contenido. + +Tras aplicar (`nixos-rebuild switch`, confirmado por el usuario), se generó +`~/.config/user-dirs.dirs` con las 8 carpetas declaradas, más una +`XDG_PROJECTS_DIR="/home/ale/Projects"` que **no** se declaró en este +cambio -- viene de algún módulo ya importado (`inputs.noctalia.homeModules. +default` es sospechoso, no confirmado con `nix eval` cuál exactamente). +Documentado acá para no sorprenderse de nuevo si aparece en otro contexto. + ## Referencias usadas - https://docs.noctalia.dev/v5/getting-started/nixos/ @@ -984,3 +1088,12 @@ autosuggestions (con el bug de orden evitado, ver arri `autosuggestion.enable` (700), compinit de oh-my-zsh (800) y `programs.zsh.plugins` genérico (900), que motivaron sourcear zsh-autosuggestions a mano en vez de con la opción nativa. +- https://github.com/noctalia-dev/noctalia-greeter/commits/main (historial + real de commits — confirmó que el pin en `flake.lock` estaba atrasado y + que ningún commit menciona explícitamente el segfault de salida). +- https://github.com/bluez/bluez/issues (búsqueda de "a2dp-sink profile + connect failed" + "Protocol not available" — issues #348, #351, #1309, + #1610, sin resolución clara documentada). +- `bluetoothctl info ` real en la máquina — confirmó que el MAC de los + mensajes de reconexión en el log es el de los AirPods Pro del usuario, + no un dispositivo desconocido. blob - 4c5a47c1329e3dcd6c3547f67dead16fa277dd95 blob + e7ffcaf879e5803bc4fb34d6ccae1087fecd23e6 --- README.md +++ README.md @@ -19,6 +19,9 @@ Flake para migrar esta PC de FreeBSD a NixOS con Hyprl fuente (`pkgs/librepods.nix`), sin AppImage ni pasos manuales. Códec A2DP restringido a SBC/AAC (`sbc_xq` causaba audio cortado, ver ronda #13 de `NOTES.md` — investigación de causa raíz todavía en curso). +- **Carpetas XDG estándar** (`Desktop`, `Documents`, `Downloads`, `Music`, + `Pictures`, `Public`, `Templates`, `Videos`) declaradas vía + `xdg.userDirs` en `home/ale/home.nix`, en vez de creadas a mano. - **Theming Qt** (Kleopatra, pinentry-qt) coherente con Noctalia vía `kdePackages.plasma-integration`/`breeze` + `QT_QPA_PLATFORMTHEME=kde`. - **Oh My Zsh + Powerlevel10k** (`home/ale/home.nix`, config generada con @@ -133,7 +136,23 @@ sudo nixos-rebuild switch --flake .#ale confirmado todavía. Ver ronda #13 de `NOTES.md` para el diagnóstico completo (se descartó LibrePods, contienda con otro dispositivo, xruns de PipeWire y pérdida de paquetes Bluetooth vía `btmon`). + + Aparte de eso: los mensajes de `BAP requires ISO Socket`/`Hands-Free + Voice gateway SDP record`/`a2dp-sink ... Protocol not available` en + `journalctl` están diagnosticados y **no son un bug** -- limitación de + hardware del adaptador (sin soporte LE Audio) y ruido normal de + reconexión a los AirPods cuando están apagados/fuera de rango. Ver + sección "Revisión de logs del sistema" en `NOTES.md` (2026-07-16). - **Cursor** — requiere cerrar sesión/reiniciar la primera vez para que Hyprland tome `HYPRCURSOR_THEME`/`HYPRCURSOR_SIZE` (son variables que el compositor lee al arrancar, no se pueden refrescar en caliente como `QT_QPA_PLATFORMTHEME`). +- **⚠️ noctalia-greeter: segfault del compositor al salir, en cada + arranque** -- no bloquea el login (pasa después de que la sesión ya se + entregó a Hyprland), pero está en el log de todos los arranques + registrados. Input `noctalia-greeter` actualizado a último commit + (`b0735981`) como intento de fix, sin confirmación upstream de que lo + resuelva. **Pendiente: verificar con `coredumpctl list --since=today` + tras el próximo reinicio real** (`greetd.service` no se reinicia en + caliente con `nixos-rebuild switch`). Ver "Revisión de logs del sistema" + en `NOTES.md` (2026-07-16) para el diagnóstico completo. blob - a0136acc1f3d9d06a7e8da7b16b0ca609ac1ca2b blob + 9ebcf302403fd84f1833fda10f8bbe2ceaf67cef --- flake.lock +++ flake.lock @@ -104,11 +104,11 @@ ] }, "locked": { - "lastModified": 1783820703, - "narHash": "sha256-3XFXclA03yVSq9CGu/2/dL7qnUKc9bhOGAx6wAyb9E4=", + "lastModified": 1783960545, + "narHash": "sha256-1hZOdPubaYy57amOjOzR5rMA4TZKXYGG2zbzHsS1r+0=", "owner": "noctalia-dev", "repo": "noctalia-greeter", - "rev": "fffc583a0da07b0240372544dd8d9effb21a30b9", + "rev": "b07359813e7a0cb85469c79617a25258ddc1497d", "type": "github" }, "original": { blob - 8b839f01640969af47bf23713ff4292dbc9cd845 blob + 9a2a2424d614d5ae367f881f9b7a62e233ab6bc9 --- home/ale/home.nix +++ home/ale/home.nix @@ -13,6 +13,25 @@ programs.home-manager.enable = true; + # --- Carpetas XDG estándar --- + # Antes solo existían Pictures/Videos/Downloads creadas a mano (más una + # "Descargas" duplicada, probablemente de una app que leyó el locale + # es_MX). Declararlas acá evita que queden huérfanas fuera del repo y + # que se vuelvan a duplicar. Nombres en inglés a propósito, para no + # romper Pictures/Videos/Downloads que ya existen y tienen contenido. + xdg.userDirs = { + enable = true; + createDirectories = true; + desktop = "${config.home.homeDirectory}/Desktop"; + documents = "${config.home.homeDirectory}/Documents"; + download = "${config.home.homeDirectory}/Downloads"; + music = "${config.home.homeDirectory}/Music"; + pictures = "${config.home.homeDirectory}/Pictures"; + publicShare = "${config.home.homeDirectory}/Public"; + templates = "${config.home.homeDirectory}/Templates"; + videos = "${config.home.homeDirectory}/Videos"; + }; + # --- Cursor --- # Sin esto, Hyprland cae a su cursor propio por defecto (el logo de # Hyprland) -- no hay ningún theme de cursor instalado/declarado.