Barrido de TEXTO puro: 1427 líneas de comentario TOML. Cero ArtifactHash movidos, y eso está MEDIDO, no deducido: hasheé las 741 antes y después y los ficheros de hashes son idénticos byte a byte (723 con hash real + 18 que ya no hasheaban de antes). El guardián valió la pena: el primer barrido, filtrando por 'la línea empieza con #', movió el hash de helix, lsof y steam-runtime-sniper. La causa es que una fase se escribe como compile = <triple> ... <triple> y sus comentarios de SHELL también empiezan con #, pero viven dentro del VALOR — y las fases sí entran en hash_inputs. El barrido ahora calcula los rangos de las cadenas multilínea de TOML y no entra ahí. Quedan intactos a propósito: .hammer-zig-cc y .hammer-cargo-vendor (literales dentro de fases), hammerd, hammer-recover y toda ruta que empiece por /
112 lines
7.0 KiB
TOML
112 lines
7.0 KiB
TOML
# dejavu-fonts-nerd 3.5.1 — DejaVu Sans Mono parcheada con Nerd Fonts: ~10.000 glifos de iconos
|
|
# (Powerline, Font Awesome, Devicons, Material, Octicons, Weather…) que usan starship, lsd, eza,
|
|
# neovim, las statuslines y media herramienta moderna de terminal. Sin ellos esas apps dibujan
|
|
# cuadraditos.
|
|
#
|
|
# ══ SE AÑADE, NO REEMPLAZA — Y NO ES PRUDENCIA, ES LA LICENCIA ═════════════════════════════════
|
|
# La tentación es «cambiemos DejaVu por la nerdeada y listo». No se puede, y el motivo está en el
|
|
# `LICENSE.txt` del propio tarball: la licencia de Bitstream Vera dice que una fuente modificada
|
|
# **sólo puede distribuirse SI SE LA RENOMBRA**. Por eso upstream la llama `DejaVuSansM Nerd Font`
|
|
# y no `DejaVu Sans Mono` — leído en el `name` de la TTF, no supuesto:
|
|
#
|
|
# familia(1) = DejaVuSansM Nerd Font Mono postscript(6) = DejaVuSansMNFM
|
|
#
|
|
# ⇒ **una fuente nerdeada NO puede responder al nombre de la original.** Si se sustituyera, todo lo
|
|
# que pide «DejaVu Sans Mono» por nombre dejaría de encontrarla, empezando por `foot`, que ya murió
|
|
# una vez con `monospace::size=8: failed to match font` (ver el perfil `escritorio-sway`).
|
|
# Por eso conviven: `dejavu-fonts` sigue siendo la familia con su nombre de siempre, y ésta se
|
|
# enchufa por fontconfig, que es el mecanismo que existe justamente para esto.
|
|
#
|
|
# ══ SÓLO LA MONOESPACIADA, Y SÓLO UNA DE LAS TRES VARIANTES ════════════════════════════════════
|
|
# «Que todas las fuentes estén nerdeadas» no se puede cumplir al pie de la letra y conviene saber
|
|
# por qué: **upstream sólo publica parcheada la MONOESPACIADA**. No existe una DejaVu Sans ni una
|
|
# DejaVu Serif con iconos, y tampoco tendría sentido — los glifos de Nerd Fonts son para terminal,
|
|
# editor y statusline; en una fuente de interfaz proporcional no los pide nadie.
|
|
#
|
|
# Y de la mono, el tarball trae TRES variantes que son los mismos glifos con distinto ancho de
|
|
# avance de los iconos: `NerdFont` (doble ancho), `NerdFontMono` (ancho simple) y `NerdFontPropo`
|
|
# (proporcional). Instalar las doce cuesta **32 MB**; instalar sólo las cuatro de `NerdFontMono`
|
|
# cuesta **11 MB**. Se quedan las `Mono`, que son las correctas para una rejilla de terminal —
|
|
# un icono de doble ancho descuadra la cuadrícula. Para comparar: la familia DejaVu ENTERA
|
|
# (Sans + Serif + Mono, 22 ficheros) son 9,8 MB.
|
|
#
|
|
# ══ ⚠ LA LICENCIA NECESITA UNA PASADA HUMANA ANTES DE `takana pack` ════════════════════════════
|
|
# El `LICENSE.txt` que viene en el tarball cubre **sólo DejaVu/Bitstream Vera** y no dice ni una
|
|
# palabra de los ~10 conjuntos de iconos IMPORTADOS, que tienen licencias propias y distintas
|
|
# (Font Awesome es CC-BY-4.0, Octicons MIT, Material Design Icons OFL, Powerline MIT…). O sea que
|
|
# el artefacto es un derivado multi-licencia y el fichero que lo acompaña lo subrepresenta.
|
|
# El campo de abajo dice lo que está DOCUMENTADO en la fuente, no el conjunto real, y por eso se
|
|
# deja anotado acá en vez de inventar una cadena SPDX: el campo `license` NO SE ADIVINA (y está
|
|
# fuera de `hash_inputs`, así que corregirlo después no re-hashea nada).
|
|
#
|
|
# ══ CÓMO SE ENCHUFA: fontconfig, no renombrado ═════════════════════════════════════════════════
|
|
# Se instala un `/etc/fonts/conf.d/59-nerd-monospace.conf` que hace que el alias `monospace`
|
|
# PREFIERA la nerd. `fonts.conf` incluye `conf.d` (leído del artefacto de fontconfig, no supuesto).
|
|
# Efecto: las terminales y todo lo que pide «monospace» —que es lo normal— se llevan los iconos,
|
|
# y quien pida «DejaVu Sans Mono» por nombre sigue recibiendo la original, intacta.
|
|
#
|
|
# ⚠ **EL NÚMERO 59 ESTÁ MEDIDO, NO ELEGIDO.** fontconfig carga `conf.d` en orden alfabético y un
|
|
# `<prefer>` que llega ANTES gana la cabeza de la lista. El fontconfig de esta distro trae
|
|
# `60-latin.conf`, que ya prefiere `Noto Sans Mono, DejaVu Sans Mono, Inconsolata…` para
|
|
# `monospace`. Con el fichero en `60-nerd-monospace.conf` —que ordena DESPUÉS de `60-latin.conf`—
|
|
# `fc-match monospace` seguía devolviendo `DejaVu Sans Mono`: la conf estaba instalada y era
|
|
# INERTE. Comprobado montando el `conf.d` real del artefacto de fontconfig y corriendo `fc-match`:
|
|
#
|
|
# 60-nerd-monospace.conf → DejaVu Sans Mono (pierde)
|
|
# 59-nerd-monospace.conf → DejaVuSansM Nerd Font Mono (gana)
|
|
#
|
|
# `45-latin.conf` también menciona monospace pero usa `<default>`, no `<prefer>`, así que no compite.
|
|
# Es el mismo modo de fallar que el plugin de PipeWire para ALSA: instalado y sin que lo use nadie.
|
|
name = "dejavu-fonts-nerd"
|
|
version = "3.5.1"
|
|
# Sólo lo documentado en el LICENSE.txt del tarball. Ver el ⚠ de arriba: el conjunto real incluye
|
|
# las licencias de los iconos importados, que upstream no enumera.
|
|
license = "Bitstream-Vera"
|
|
|
|
[source]
|
|
tarball = "https://github.com/ryanoasis/nerd-fonts/releases/download/v3.5.1/DejaVuSansMono.tar.xz"
|
|
sha256 = "9d3f2d60faa790b101903c2984b89c11397fc63b9ce43f2dcd25ffed4fb44e5f"
|
|
# ⚠ `strip_components = 0` NO ES COSMÉTICO. El default de takana es 1, pensado para el tarball
|
|
# normal que extrae a `<nombre>-<version>/`. **Éste es PLANO**: los `.ttf` están en la raíz del
|
|
# archivo, sin directorio contenedor. Con el default, `tar --strip-components 1` se come el único
|
|
# nivel que hay y **el árbol de fuentes queda VACÍO** — y el build no se detiene ahí: sigue a las
|
|
# fases y falla más tarde, en el `cp`, con un mensaje que no menciona la extracción. Es la misma
|
|
# figura de siempre: el vacío se lee como presencia hasta que algo tropieza con él.
|
|
strip_components = 0
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "dynamic"
|
|
|
|
[build.phases]
|
|
configure = "true"
|
|
compile = "true"
|
|
install = '''
|
|
set -e
|
|
mkdir -p /out/usr/share/fonts/dejavu-nerd /out/etc/fonts/conf.d
|
|
# Sólo la variante Mono: ver la cabecera (las otras dos son los mismos glifos con otro avance).
|
|
cp DejaVuSansMNerdFontMono-*.ttf /out/usr/share/fonts/dejavu-nerd/
|
|
cp LICENSE.txt /out/usr/share/fonts/dejavu-nerd/
|
|
cat > /out/etc/fonts/conf.d/59-nerd-monospace.conf <<'CONF'
|
|
<?xml version="1.0"?>
|
|
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
|
|
<!-- Hace que `monospace` prefiera la DejaVu parcheada con Nerd Fonts, para que las terminales y
|
|
las apps de TUI tengan los glifos de iconos. NO renombra ni sustituye: quien pida
|
|
«DejaVu Sans Mono» por nombre sigue recibiendo la original. Ver recipes/dejavu-fonts-nerd.toml -->
|
|
<fontconfig>
|
|
<alias>
|
|
<family>monospace</family>
|
|
<prefer><family>DejaVuSansM Nerd Font Mono</family></prefer>
|
|
</alias>
|
|
</fontconfig>
|
|
CONF
|
|
# Un `cp` que no copia nada sale 0 si el glob no casa y el artefacto queda VACÍO: se comprueba.
|
|
test "$(ls /out/usr/share/fonts/dejavu-nerd/*.ttf | wc -l)" = "4" || {
|
|
echo "ERROR: se esperaban 4 TTF de la variante Mono" >&2; ls -l /out/usr/share/fonts/dejavu-nerd >&2; exit 1
|
|
}
|
|
'''
|
|
|
|
[deps]
|
|
build = []
|