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…

TOML 815Rust 56Shell 37Markdown 291229 Definiciones

⎇ a6a9d59e4f0d354cf2c9066538c6fa7016fc6721 recipes/incoming-cosmic/cosmic-settings.toml TOML · 71 líneas · 4.7 KB Historia crudo

licencias: 936 de 1141 (82%) — detección por evidencia, con sus dos imprecisiones declaradas a6a9d59e4 · sergio ·

1# cosmic-settings — el panel de control. Tercera aplicación con ventana del catálogo.
2#
3# ── LO QUE NO ARRASTRA, Y ES LA BUENA NOTICIA ───────────────────────────────────────────────────
4# Un panel de control suena a la peor dep del mundo: red, audio, discos, usuarios, energía,
5# bluetooth. En COSMIC no lo es, porque **habla con los daemons por D-Bus vía `zbus`, que es Rust
6# puro**: no enlaza NetworkManager, ni libpulse, ni udisks, ni accountsservice. Se comprobó ANTES de
7# escribir la receta, listando los crates `-sys` del `Cargo.lock`, que es donde vive la verdad sobre
8# qué C hace falta:
9#   drm-sys → libdrm · input-sys → libinput · libudev-sys → libudev-zero · dav1d-sys → dav1d
10#   wayland-sys → dlopen (runtime) · gettext-sys → trae su propio C
11# O sea: el juego fijo de todo cliente, más `libdrm` (configuración de pantallas) y `dav1d`, que
12# vuelve a aparecer por la unificación de features de cargo — la misma que lo trajo con cosmic-bg.
13#
14# `rust-version = "1.93"` en el workspace; el sandbox tiene 1.96 ⇒ entra sin tocar nada.
15name    = "cosmic-settings"
16version = "1.5.0"
17license = "GPL-3.0"
18
19[source]
20tarball = "https://github.com/pop-os/cosmic-settings/archive/epoch-1.5.0/cosmic-settings-epoch-1.5.0.tar.gz"
21sha256  = "06070fae46b77a57f906b0ee670e9d5c8ec10604359653bc6ca7b1eece6237ec"
22# ⚠ LA MISMA BARRA DE MÁS QUE EN `cosmic-applets`, y falla igual de temprano: el manifiesto apunta a
23# `https://github.com/pop-os/cosmic-protocols//` (dos barras al final) para que cargo trate esa
24# fuente como DISTINTA de la normal y el `[patch]` de al lado no se apunte a sí mismo. GitHub
25# devuelve **404** a esa forma, así que `cargo vendor` no puede clonar y el build muere en el fetch:
26#     failed to load source for dependency `cosmic-client-toolkit`  ← con tres reintentos de red
27# La barra se MUEVE al medio (`pop-os//cosmic-protocols`), que es la forma que usa `cosmic-comp` —y
28# por eso ése construyó sin parche—. Se tocan `Cargo.toml` **y** `Cargo.lock`: cambiar sólo uno rompe
29# el `--locked` del build hermético.
30patches = ["cosmic-settings-protocols-url.patch"]
31
32[build]
33compiler = "zig-cc"
34target   = "x86_64-linux-musl"
35# Dinámico como todo cliente de la suite: `wayland-client` entra con la feature `dlopen` y un musl
36# estático no la honra.
37link     = "dynamic"
38# El workspace es VIRTUAL (no tiene paquete raíz) pero declara
39# `default-members = ["cosmic-settings"]`, así que `-p` deja el target único que `cargo rustc --`
40# exige. Sin `-p`, cargo intentaría construir los ~30 miembros (`pages/*`, `subscriptions/*`).
41flags    = ["-p", "cosmic-settings", "--bin", "cosmic-settings"]
42
43[build.phases]
44# El `just install` traducido, con `rootdir=/`. Son CUATRO clases de fichero y ninguna es opcional:
45#   · el binario;
46#   · `target/xdgen/` → los `.desktop`, que el build GENERA (crate `xdgen`). Acá son VARIOS, uno por
47#     página del panel (pantalla, sonido, red…), así que la biblioteca lista cada sección como
48#     entrada propia. Por eso es un `find`, no un `cp` de un fichero.
49#   · `resources/default_schema/` → la config por defecto de cosmic-config, mismo árbol
50#     `<Componente>/v1/<clave>` que ya mordió en cosmic-comp: **cada clave es UN fichero cuyo nombre
51#     es la clave**, así que hay que preservar la estructura (de ahí el `find`, no un `cp` plano).
52#   · las reglas de polkit: sin ellas el panel abre pero no puede cambiar nada que pida autoridad
53#     (usuarios, hora del sistema). Van con el paquete, no con el shim de arje.
54install = '''
55mkdir -p /out/usr/bin /out/usr/share/applications /out/usr/share/metainfo \
56         /out/usr/share/cosmic /out/usr/share/icons/hicolor \
57         /out/usr/share/polkit-1/actions /out/usr/share/polkit-1/rules.d
58cp target/release/cosmic-settings /out/usr/bin/cosmic-settings
59chmod 755 /out/usr/bin/cosmic-settings
60cp resources/com.system76.CosmicSettings.metainfo.xml /out/usr/share/metainfo/
61cp resources/polkit-1/rules.d/cosmic-settings.rules   /out/usr/share/polkit-1/rules.d/
62cp resources/polkit-1/actions/com.system76.CosmicSettings.Users.policy /out/usr/share/polkit-1/actions/
63[ -d target/xdgen ] && (cd target/xdgen && find . -type f -exec cp --parents '{}' /out/usr/share/applications/ \;) || true
64(cd resources/default_schema && find . -type f -exec cp --parents '{}' /out/usr/share/cosmic/ \;)
65(cd resources/icons && find . -type f -exec cp --parents '{}' /out/usr/share/icons/hicolor/ \;)
66'''
67
68[deps]
69# El juego fijo de todo cliente + `libdrm` (páginas de pantalla) + `dav1d` (unificación de features
70# de cargo, igual que en cosmic-bg). Nada de NetworkManager/pipewire/udisks: todo eso es zbus.
71build = ["libxkbcommon", "pkgconf", "libudev-zero", "libinput", "libdrm", "dav1d"]