commit - 9c40aa26671417206b85ce6b036d99b323e871a0
commit + 83ebc928af788d3849decde84b7b5eeda2b2a3b3
blob - e0d1a4e5c11bb083e076ac63819a8d31b0b1a725
blob + 9d91968fb716eceff46b108fcd1dfa7ec5cf9994
--- NOTES.md
+++ NOTES.md
é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/
`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 <MAC>` 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
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
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
]
},
"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
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.