tawasuyu

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…

TOML 1373Shell 116Rust 74Markdown 641915 Definiciones

⎇ 0e35652fb1a5ffed39cf6b2ba4f4fb693b7f1b21 recipes/upower.toml TOML · 65 líneas · 3.8 KB Historia crudo

un solo NetworkManager (y KDE recupera WiFi) + upower al corpus sin arrastrar polkit 0e35652fb · Sergio ·

1# upower 1.90.10 — **la variante del CORPUS**: el demonio que reporta batería, carga y estado de
2# energía por D-Bus. Es lo que alimenta el indicador de batería de un escritorio.
3#
4# ══ POR QUÉ EXISTE ESTA COPIA (2026-09-13) ═════════════════════════════════════════════════════
5# El barrido de servicios midió que **`escritorio-cosmic` dibuja un indicador de batería y NO tiene
6# `upowerd`** en su clausura: el applet existe y no tiene de dónde leer. La receta vivía en
7# `incoming-kde` y en `incoming-gnome` —las dos inalcanzables desde COSMIC, que es una cola
8# hermana— así que la copia va al corpus, el único sitio desde el que las cuatro imágenes la ven.
9#
10# ══ EL CAMBIO QUE HACE QUE LA CADENA CIERRE: `-Dpolkit=disabled` ═══════════════════════════════
11# La variante de KDE va con `-Dpolkit=enabled` «porque polkit YA está sellada» — cierto **en esa
12# cola**. Desde el corpus, `polkit` NO se alcanza, y promoverlo sería meter un polkit de verdad al
13# lado de `arje-polkit-compat`: una decisión de arquitectura, no un paso de este barrido.
14#
15# Apagarlo cuesta poco y conviene saber QUÉ cuesta: polkit en upower sólo gobierna las acciones
16# PRIVILEGIADAS (suspender/hibernar por `org.freedesktop.UPower`), que además están deprecadas —
17# hoy eso lo hace logind. **Reportar batería, carga, tiempo restante y estado de la línea de
18# corriente no pasa por polkit**, y es exactamente para lo que COSMIC lo quiere. Con esto la cadena
19# es `libgudev` + `udev-pc` + `upower`, y las dos primeras sellan con hash IDÉNTICO desde las dos
20# partes ⇒ entran por cache-hit.
21#
22# ⚠ Hay tres variantes vivas (corpus, kde, gnome) y no colisionan: ninguna imagen hidrata dos.
23# La de GNOME va con introspección (gjs dlopea `libupower-glib.so.3`); ésta no la necesita.
24#
25# Lo que sigue es la documentación de la variante de KDE, de la que ésta es copia.
26name    = "upower"
27version = "1.90.10"
28license = "GPL-2.0-or-later"
29
30[source]
31tarball = "https://gitlab.freedesktop.org/upower/upower/-/archive/v1.90.10/upower-v1.90.10.tar.gz"
32sha256  = "7fcd51bece2526dbee5170feb3ffd1adab5b0cd023575f1fd119d969b73f4b90"
33
34[build]
35compiler = "zig-cc"
36target   = "x86_64-linux-musl"
37link     = "dynamic"
38
39[build.phases]
40configure = '''
41set -e
42PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/share/pkgconfig PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output \
43  --prefix=/usr --buildtype=release --wrap-mode=nodownload \
44  -Ddefault_library=both -Dos_backend=linux -Dintrospection=disabled \
45  -Didevice=disabled -Dpolkit=disabled -Dman=false -Dgtk-doc=false \
46  -Dudevrulesdir=/usr/lib/udev/rules.d -Dudevhwdbdir=/usr/lib/udev/hwdb.d \
47  -Dsystemdsystemunitdir=no -Dc_args=-Wno-error=date-time
48'''
49compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
50install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
51
52[deps]
53# Sin las cuatro de introspección: las saca `-Dintrospection=disabled` (ver cabecera).
54build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny", "glib", "libgudev", "udev-pc", "libudev-zero", "libffi", "pcre2", "zlib-shared", "expat", "dbus-shared"]
55
56# El demonio. Mismo `label` e `id` que la variante de GNOME a propósito: es EL MISMO servicio
57# lógico, y el id (ULID) del SDD 30 identifica al servicio, no al artefacto que lo trae. Ninguna
58# imagen hidrata dos upower, así que no hay ambigüedad.
59# ⚠ Declararlo NO lo enciende: falta que el perfil lo habilite. Ver `escritorio-cosmic`.
60[[service]]
61label   = "upowerd"
62id      = "01HQAR53D4M2NBV8KZTYXFQA24"
63exec    = "/usr/libexec/upowerd"
64scope   = "system"
65restart = { initial_ms = 500, max_ms = 20000 }