X Linux
Menú de documentación

Resumen/Scripts y CLI

x — referencia de layout

Repo de aprovisionamiento del sistema x (por scripts, sin instalador gráfico; ADR-0001/ADR-0003 en DECISIONS.md en la raíz del workspace).

Árbol

RutaRol
bin/xEl dispatcher de la CLI x (sin args/help/list/-h/--help imprimen la ayuda).
bin/x-*.shUn archivo por subcomando, resuelto por nombre + metadatos de cabecera. Ver cli.md.
install/Orquestadores de aprovisionamiento por fase. Ver provisioning.md.
install/system.shEntrada root: encadena config.shhardware.shlogin.shpost-install.sh.
install/config.shRoot: siembra /etc/skel desde skel/ y aplica el overlay de /etc desde etc/.
install/hardware.shRoot: detecta/ejecuta los módulos bajo hardware/.
install/login.shRoot: habilita servicios base (NetworkManager).
install/post-install.shRoot: branding final; hoy es un stub.
install/user.shAprovisionamiento de usuario (delega en user-seed.sh vía runuser si corre como root; luego node e Hyprland opcionales).
install/user-seed.shSiembra el home desde el skeleton y sincroniza config/ a ~/.config.
install/helpers/common.shLibrería bash: log/warn/error, helpers de privilegios y usuario target, exporta X_ROOT.
install/helpers/sync.shSync idempotente de árboles: x_copy_tree, x_seed_home, x_sync_config.
install/x-base.packagesLista de paquetes base legible por el builder (uno por línea); aún sin consumidor cableado.
skel/Seed de /etc/skel para usuarios nuevos (hoy un .bashrc).
etc/Drop-ins de /etc, un directorio por ruta (sysctl.d, tmpfiles.d, sudoers.d, pacman.d/hooks documentados en su README); aún no se publica ningún drop-in.
config/Dotfiles de usuario sincronizados a ~/.config. config/hypr/ es solo un punto de entrada documental + wallpaper por defecto; la config real de escritorio viaja offline en el paquete (/usr/share/x/config), ADR-0005.
migrations/Migraciones por usuario idempotentes (<timestamp>-<name>.sh), aplicadas por x migrate / x update.
themes/Almacén de temas: themes/<name>/colors (key=hex), aplicado por x theme set.
hardware/Módulos root autocontenidos: nvidia.sh, qemu.sh.
tools/Tools de nivel usuario: node.sh (fnm, controlado por X_NODE), hyprland-install.sh (despliegue offline de config Hyprland/kitty/nvim, controlado por X_HYPRLAND).
packaging/PKGBUILD de x-scripts + generador del snapshot offline vendor-config.sh + salida .vendor/ (git-ignored).
wsl/Bootstrap WSL legacy (se mantiene; previsto unificarlo con el payload).
test/Tests locales sin root: test/smoke.sh (sintaxis + helpers + CLI + dry-runs de Hyprland).
docs/Esta documentación (CLI.md, LAYOUT.md, en/, es/).

Mecánica

  • Las fases root y de usuario están separadas; cada fase es un script invocable e idempotente.
  • Capas del home: seed de /etc/skel (instalación, config.sh) → seed del home desde skel solo-lo-que-falta (user-seed.sh) → sync de config/ a ~/.config con backups .bak.<ts>.
  • Los archivos modificados por el usuario nunca se sobrescriben en silencio: los seeds los omiten, el sync de config hace backup primero.
  • La config de escritorio se instala de forma limpia desde el snapshot offline vendido, no se mantiene aquí (ver hyprland.md, ADR-0005).

Uso

# CLI (desde el repo o instalada como /usr/bin/x)
bash bin/x help
bash bin/x setup            # sistema (root)
bash bin/x setup --user     # usuario actual
bash bin/x theme set x-dark
bash bin/x migrate
bash bin/x update

# Directo por fase (equivalente)
sudo bash install/system.sh
X_NODE=1 X_HYPRLAND=1 bash install/user.sh
sudo X_HW_NVIDIA=1 X_HW_QEMU=1 bash install/hardware.sh

# Tests locales (sin root)
bash test/smoke.sh

Ver también

  • overview.md — rol del repo en la org y en el sistema.
  • cli.md — comandos, cómo añadir comandos, variables de entorno.
  • provisioning.md — fases, helpers, idempotencia.
  • hyprland.md — el tool de setup de escritorio offline.
  • packaging.md — construir x-scripts y el snapshot vendido.

Editar esta página en GitHub