Files
msaldain bd78fd9fbe Configuracion inicial completa del entorno personal
Modulos de restauracion:
- bootstrap: instala yq, age y dependencias base (curl, wget, git, nano, gpg)
- ssh: descifra e instala claves SSH desde secrets/sshKeys.tar.gz.age
- registry: aplica paquetes apt/snap/flatpak, dotfiles, servicios y configs Docker
- thunderbird: instala Thunderbird snap y restaura perfil desde ZIP
- claudeCode: configura repositorio apt de Anthropic e instala claude-code
- easyEffects: restaura configuracion y presets desde ZIP
- wireplumber: restaura dispositivo Bluetooth por defecto y perfiles de audio
- cups: restaura impresoras y drivers PPD desde ZIP

Scripts de captura (correr antes de push):
- scripts/encryptSsh.sh: cifra ~/.ssh con age
- scripts/thunderbird/capture.sh: captura perfil de Thunderbird snap
- scripts/easyEffects/capture.sh: captura config de EasyEffects flatpak
- scripts/wireplumber/capture.sh: captura estado de WirePlumber
- scripts/cups/capture.sh: captura impresoras CUPS y PPDs (requiere sudo)

Registro de aplicaciones (config/registry.yaml):
- 9 paquetes apt, 1 snap (dbeaver-ce), 22 flatpaks incluyendo VSCodium,
  Bitwarden, Inkscape, LibreOffice, OBS Studio, Nextcloud Desktop, entre otros

Secretos incluidos:
- secrets/sshKeys.tar.gz.age: claves SSH cifradas con age
- secrets/thunderbirdProfile.zip: perfil de Thunderbird sin emails ni cache
- secrets/easyEffectsConfig.zip: ajustes y presets de salida de audio
- secrets/wireplumberState.zip: estado de audio incluyendo auriculares Bluetooth
- secrets/cupsConfig.zip: 5 impresoras configuradas con sus drivers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 18:16:40 -03:00

6.0 KiB

Agregar entrada al registro STP

Agregá una nueva entrada al registro STP para: $ARGUMENTS


Procedimiento

  1. Leé config/registry.yaml para verificar que no exista ya una entrada con el mismo id.
  2. Identificá el tipo correcto según la descripción (ver sección Tipos más abajo).
  3. Insertá la nueva entrada en config/registry.yaml, dentro de la lista registry:, respetando el orden:
    • Los ppa deben aparecer antes de cualquier apt que los requiera.
    • Dentro de cada grupo, el orden es cosmético; seguí el orden existente.
  4. Confirmá el resultado mostrando la entrada agregada.

Archivo a editar: config/registry.yaml


Tipos

apt — paquete del gestor de paquetes

- id: nombrePaquete
  type: apt
  # package: nombre-real   # solo si el nombre real difiere del id
  # minVersion: "1.2.3"    # versión mínima aceptable (opcional)
  # maxVersion: "1.2.3"    # versión máxima aceptable (opcional)

Campos:

  • id — requerido, camelCase
  • package — opcional; omitir si el id coincide con el nombre real del paquete apt
  • minVersion — opcional; versión mínima aceptable (cadena de versión Debian, ej. "2.38.1")
  • maxVersion — opcional; versión máxima a instalar

Comportamiento de instalación según los campos presentes:

minVersion maxVersion Qué instala
última versión disponible
1.0 última disponible (best-effort ≥ 1.0)
2.0 package=2.0
1.0 2.0 package=2.0 (techo del rango aceptable)
1.5 1.5 package=1.5 (versión exacta)

Cuando maxVersion está presente, el módulo siempre instala esa versión exacta con --allow-downgrades, lo que garantiza que la máquina no quede con una versión superior al límite aunque ya tuviera el paquete instalado. Si la versión instalada ya satisface el rango [minVersion, maxVersion], el paso se omite sin reinstalar.

ppa — repositorio PPA de Ubuntu

- id: nombrePpa
  type: ppa
  address: ppa:usuario/repositorio

Campos:

  • id — requerido, camelCase
  • address — requerido, formato ppa:usuario/repositorio

Debe aparecer en el archivo antes del apt que instala paquetes de ese PPA.

snap — aplicación snap

- id: nombreApp
  type: snap
  # package: nombre-snap   # solo si el nombre real difiere del id
  # classic: true          # solo si el snap requiere confinamiento clásico

Campos:

  • id — requerido, camelCase
  • package — opcional
  • classic — opcional; omitir si es false

flatpak — aplicación Flatpak

- id: nombreApp
  type: flatpak
  appId: com.ejemplo.App
  # remote: flathub        # opcional; flathub por defecto

Campos:

  • id — requerido, camelCase
  • appId — requerido, ID completo de la aplicación (ej. org.gimp.GIMP)
  • remote — opcional; omitir si es flathub

dotfile — configuración enlazada a $HOME

- id: nombreApp
  type: dotfile

Campos:

  • id — requerido, camelCase; debe coincidir con una carpeta dentro de dotfiles/

Los archivos en dotfiles/nombreApp/ se enlazan simbólicamente a su ruta equivalente en $HOME.
Ejemplo: dotfiles/bash/.bashrc~/.bashrc

Si la carpeta dotfiles/nombreApp/ no existe, crearla y colocar los archivos adentro antes de agregar la entrada.

service — servicio systemd

- id: nombreServicio
  type: service
  # name: nombre-servicio  # solo si el nombre real difiere del id
  scope: system            # system | user
  state: enable            # enable | disable | mask

Campos:

  • id — requerido, camelCase
  • name — opcional
  • scope — requerido: system o user
  • state — requerido: enable, disable o mask

pipewire — configuración completa de PipeWire

- id: pipewire
  type: pipewire
  replacePulseaudio: true
  packages:
    - pipewire
    - pipewire-audio
    - pipewire-pulse
    - wireplumber
    - libspa-0.2-bluetooth
  userServices:
    - pipewire
    - pipewire-pulse
    - wireplumber

Campos:

  • replacePulseaudiotrue para deshabilitar y enmascarar PulseAudio
  • packages — lista de paquetes apt a instalar
  • userServices — lista de servicios systemd de usuario a habilitar

video — drivers de GPU (detección automática con lspci)

- id: gpuDrivers
  type: video
  drivers:
    nvidia:
      packages:
        - nvidia-driver-535
        - nvidia-settings
    amd:
      packages:
        - mesa-vulkan-drivers
        - radeontop
        - vainfo
    intel:
      packages:
        - intel-media-va-driver
        - vainfo

Solo se instalan los paquetes del vendor detectado. Podés incluir uno, dos o los tres vendors.


docker — configuración Docker (Compose o Dockerfile)

- id: nombreServicio
  type: docker
  # destination: ~/docker/nombreServicio  # destino en el sistema (opcional, ese es el valor por defecto)
  # autostart: true                        # ejecutar docker compose up -d tras el deploy (opcional, false por defecto)

Campos:

  • id — requerido, camelCase
  • destination — opcional; directorio de destino donde se enlazan los archivos. Soporta ~. Por defecto: ~/docker/<id>
  • autostart — opcional; si true, ejecuta docker compose up -d después de enlazar los archivos. Requiere un archivo compose en el destino

Los archivos del servicio deben estar en docker/<id>/ dentro del repo. Se enlazan simbólicamente a destination/, respetando la estructura de subdirectorios.

Ejemplo de estructura:

docker/
  miServicio/
    compose.yaml
    .env.example
    config/
      nginx.conf

Si Docker no está instalado en la máquina, el paso se saltea con un aviso sin interrumpir el resto del STP.


Convenciones

  • id siempre en camelCase, sin guiones ni guiones bajos
  • Omitir campos opcionales cuando no aplican — no usar null ni strings vacíos
  • El campo name, package o appId solo es necesario cuando difiere del id