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>
6.0 KiB
Agregar entrada al registro STP
Agregá una nueva entrada al registro STP para: $ARGUMENTS
Procedimiento
- Leé
config/registry.yamlpara verificar que no exista ya una entrada con el mismoid. - Identificá el tipo correcto según la descripción (ver sección Tipos más abajo).
- Insertá la nueva entrada en
config/registry.yaml, dentro de la listaregistry:, respetando el orden:- Los
ppadeben aparecer antes de cualquieraptque los requiera. - Dentro de cada grupo, el orden es cosmético; seguí el orden existente.
- Los
- 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, camelCasepackage— opcional; omitir si el id coincide con el nombre real del paquete aptminVersion— 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, camelCaseaddress— requerido, formatoppa:usuario/repositorio
Debe aparecer en el archivo antes del
aptque 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, camelCasepackage— opcionalclassic— opcional; omitir si esfalse
flatpak — aplicación Flatpak
- id: nombreApp
type: flatpak
appId: com.ejemplo.App
# remote: flathub # opcional; flathub por defecto
Campos:
id— requerido, camelCaseappId— 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 dedotfiles/
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, camelCasename— opcionalscope— requerido:systemouserstate— requerido:enable,disableomask
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:
replacePulseaudio—truepara deshabilitar y enmascarar PulseAudiopackages— lista de paquetes apt a instalaruserServices— 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, camelCasedestination— opcional; directorio de destino donde se enlazan los archivos. Soporta~. Por defecto:~/docker/<id>autostart— opcional; sitrue, ejecutadocker compose up -ddespué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
idsiempre en camelCase, sin guiones ni guiones bajos- Omitir campos opcionales cuando no aplican — no usar
nullni strings vacíos - El campo
name,packageoappIdsolo es necesario cuando difiere delid