gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

⎇ main recipes/uevent-relay.toml TOML · 43 lines · 2.4 KB History raw

feat(firmware): el firmware de una PC x86 COMPLETO, y el hotplug declarado en base 0c84ec1f5 · sergio ·

1# uevent-relay — la pieza que le faltaba al hotplug de la imagen.
2#
3# ══ QUÉ ARREGLA, MEDIDO EN METAL EL 2026-10-15 ═════════════════════════════════════════════════
4# *«los accesorios no aparecen cuando se conectan después de iniciar»*. El kernel emite sus uevents
5# al grupo netlink 1; `libudev-zero` abre su monitor `"udev"` —el que pide `libinput`— en el grupo
6# 0x4, que es donde `udevd` reenvía lo ya procesado. **Sin `udevd` nadie emite nunca al 0x4**, así
7# que el monitor no recibe un solo evento en toda la sesión y todo lo que se enchufa después de
8# arrancar es invisible. Es el contrato de libudev-zero, escrito en su README: hay que
9# rebroadcastear, y «hotplugging support is fully optional» — takana se salteó ese paso.
10#
11# El detalle completo (incluida la razón de que esto sea un reenviador y no un parche de una línea a
12# libudev-zero: la carrera que el propio autor advierte) está en el encabezado del crate.
13#
14# ⚠ **Va en TODOS los perfiles que lleven `libudev-zero`.** Sin él, el escritorio funciona con lo que
15# estaba enchufado al arrancar y con nada más: un ratón USB que se conecta después no mueve el
16# puntero, y el síntoma no nombra a ninguna de las tres piezas que participan.
17name    = "uevent-relay"
18version = "0.0.1"
19license = "MIT"
20
21[source]
22repo   = "https://git.tawasuyu.net/sergio/takana.git"
23commit = "5b761c17554ac412dde80ab2c2f77657fd1a90fe"
24
25[build]
26compiler = "zig-cc"
27target   = "x86_64-linux-musl"
28link     = "static"
29flags    = ["-p", "uevent-relay"]
30
31# ── La Card: arje lo levanta y lo vuelve a levantar ───────────────────────────────────────────────
32# `scope = "system"` porque el reenvío es de la MÁQUINA y no de una sesión: el greeter todavía no
33# tiene a nadie dentro y ya hace falta que un teclado enchufado aparezca.
34#
35# El backoff es corto a propósito: si esto muere, el hotplug de la máquina muere con él, y el único
36# síntoma es que los accesorios dejan de aparecer — exactamente el defecto que viene a cerrar, pero
37# intermitente, que es peor. Que vuelva rápido.
38[[service]]
39label   = "uevent-relay"
40id      = "01M4ZQ8H3NKQ7VPT5WRXB4YJ6C"
41exec    = "/usr/bin/uevent-relay"
42scope   = "system"
43restart = { initial_ms = 200, max_ms = 5000 }