# os-release — la identidad del sistema, que hasta hoy NO EXISTÍA. # # Se descubrió al meter `fastfetch` (2026-09-14): en la caja de producción decía # # Host: vServer (20171111) # Kernel: Linux 7.1.2 # # …y ni una palabra de takana, porque `/etc/os-release` no está. No es cosmético: ese fichero es lo # que TODO el mundo lee para saber en qué distro corre — fastfetch, los instaladores de terceros, los # scripts de CI, el propio `qorpa` el día que quiera distinguir anfitrión de huésped. Una distro sin # `os-release` es anónima para cualquier programa que no sea suyo. # # ══ POR QUÉ UNA RECETA Y NO UNA CONSTANTE EN `takana-bootstrap` ════════════════════════════════ # El `/etc/passwd` del producto SÍ es una constante de Rust, y esa decisión ya costó: para añadir un # usuario había que recompilar takana (lo arregló `[[user]]`). Meter `os-release` ahí re-sellaría el # `product-rootfs`, que es el **baseline del selfhost**, por un fichero de cinco líneas. Como receta # entra por perfil, se edita sin tocar el bootstrap y su radio es cero. # # ══ Y EL LOGO, QUE ES PARTE DE LA IDENTIDAD ════════════════════════════════════════════════════ # `fastfetch` dibujaba **el pingüino genérico de Linux**: elige el logo por el `ID` de `os-release` # y no conoce `takana`. Van juntos acá y no en la receta de fastfetch porque lo que se declara es la # identidad del sistema —nombre, URL, color, logo—, no la configuración de una herramienta: mañana # el que dibuje puede ser otro programa y el logo seguirá siendo el mismo fichero. # · `/usr/share/takana/logo.txt` — un martillo, que es lo que significa el nombre en quechua # · `/etc/xdg/fastfetch/config.jsonc` — la config GLOBAL (XDG), no la de un usuario # # ⚠ SIN VERSIÓN NI FECHA, a propósito. Un `VERSION_ID` con la fecha del build haría que este # artefacto —y con él la clausura de toda imagen que lo lleve— cambiara de hash cada día sin que # nada haya cambiado. La versión de una distro de árbol único es el hash de su imagen, que ya existe. name = "os-release" version = "1" license = "MIT" [source] dir = "os-release/tree" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" flags = [] [build.phases] configure = "true" compile = "true" install = "mkdir -p /out/etc /out/usr/lib && cp -a /src/etc/. /out/etc/ && cp -a /src/usr/. /out/usr/ && ln -sf ../../etc/os-release /out/usr/lib/os-release"