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…
gnome: el bus de sistema COMPLETO — faltaba polkit, y lo dijo la lista de nombres
1# arje-polkit-compat — el shim de `org.freedesktop.PolicyKit1.Authority` del fractal.
2#
3# POR QUÉ HACE FALTA, y es un diagnóstico que su propio autor ya había escrito: el comentario del
4# crate dice literalmente «apps que usan polkit bloquean en `CheckAuthorization` si no responde
5# nadie». Eso es exactamente lo que pasaba al arrancar la sesión GNOME:
6#
7# !! bus: org.freedesktop.Accounts NO apareció en 10s
8# !! bus: org.freedesktop.UPower NO apareció en 10s
9# nombres en el bus: org.freedesktop.DBus, org.freedesktop.login1, :1.0, :1.1, :1.2
10#
11# Los dos daemons estaban CONECTADOS al bus (`:1.x`) pero sin adquirir su nombre: se quedaban en
12# `polkit_authority_get_sync()` esperando a un `org.freedesktop.PolicyKit1` que no existía. Y como no
13# adquirían el nombre, gnome-shell esperaba 25 s a cada uno.
14#
15# **Ese dato no se sacó del log del daemon sino de la LISTA DE NOMBRES DEL BUS**: una conexión anónima
16# sin nombre bien conocido dice «arrancó y no llegó a pedirlo», que es distinto de «no arrancó» y de
17# «lo pidió y se lo negaron». Vale para cualquier servicio D-Bus que parezca colgado.
18#
19# POR QUÉ ESTE SHIM Y NO EL polkitd DE VERDAD: nuestra receta `polkit` va con `-Dlibs-only=true` —el
20# bloque `if not libs_only` es justo el que pide expat y duktape— y la decisión estaba tomada desde
21# entonces: **el demonio lo pone arje**. La autorización real del fractal no es polkit sino SO_PEERCRED
22# + capability grants sobre el bus interno; polkit es sólo la interfaz que el escritorio espera
23# encontrar.
24#
25# ⚠ POSTURA DE SEGURIDAD, explícita porque no es un detalle: este shim responde
26# `is_authorized = true` a TODO, y deja traza en el log de qué se pidió. Es la decisión que arje ya
27# había tomado —el fractal es un sistema confiado y la puerta está en otro lado—, no algo que esta
28# receta introduzca. Su propio comentario marca el camino de producción: que `CheckAuthorization` pida
29# un token al grafo y devuelva el resultado. Mientras eso no exista, **cualquier cliente de polkit en
30# esta distro está autorizado**, y quien lea esta receta tiene que saberlo.
31#
32# HUB-ONLY, como toda receta con fuente tawasuyu: el clone va a `gitea@git.tawasuyu.net` por el puerto
33# 22 y la gitea escucha en :2345; el worker efímero es secretless por diseño y recibe
34# `Connection refused`. Se muele en el hub. Ver [[rootfs-laptop-worker-divergen]].
35name = "arje-polkit-compat"
36version = "0.0.1"
37
38[source]
39# Mismo commit y misma rama que arje-logind-compat: `selfhost/arje-zero-attest-lockfile` es la única
40# que versiona el `Cargo.lock` de la raíz, sin el cual el vendoreo `--locked` no es reproducible.
41repo = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git"
42commit = "98db584fd28d9ff2bf34c9cf7d7db2e1de0b3fd0"
43# El monorepo commitea su propio `vendor/` (la copia parcheada de smithay que mirada necesita) y el
44# `cargo vendor` de hammer lo pisaría. Ver [[hammer-cargo-vendor-clobbers-project-vendor]].
45cargo_vendor_dir = ".hammer-cargo-vendor"
46
47[build]
48compiler = "zig-cc"
49target = "x86_64-linux-musl"
50link = "static"
51flags = ["-p", "arje-compat", "--bin", "arje-polkit-compat"]