feat: migrate SSH keyring to gcr-ssh-agent and unify documentation

- Update ssh-keyring module to use gcr-ssh-agent.socket instead of gnome-keyring's SSH component
- Configure SSH_AUTH_SOCK to $XDG_RUNTIME_DIR/gcr/ssh
- Merge DOCUMENTACION.md content into Readme.md for unified documentation
- Rename install.md to installed_software.md with updated SSH keyring section

Note: gnome-keyring 46.0+ moved SSH functionality to gcr, requiring gcr-ssh-agent service
This commit is contained in:
Marco Gallegos
2026-01-11 09:55:46 -06:00
parent 8465fc4fb2
commit 72208b8301
9 changed files with 457 additions and 238 deletions

View File

@@ -1,135 +0,0 @@
# DOCUMENTACION.md - Referencia Técnica de Módulos
Este documento proporciona una descripción técnica detallada de cada script y módulo que forma parte del proyecto Omarchy Setup.
## 1. Script Principal: `omarchy-setup.sh`
Este es el script orquestador y el punto de entrada para el usuario.
- **Función Principal:** Proporcionar una interfaz de menú interactiva que permite al usuario seleccionar qué módulos de configuración desea ejecutar.
- **Características Clave:**
- **Menú Dinámico:** Muestra una lista de todos los módulos disponibles, permitiendo al usuario elegir uno, varios ("Instalar Todo") o salir.
- **Gestión de `sudo`:** Solicita la contraseña de `sudo` una vez y la mantiene activa en segundo plano para evitar que el usuario tenga que introducirla repetidamente.
- **Ejecución Modular:** Llama a las funciones principales de los scripts ubicados en el directorio `modules/`.
- **Feedback Visual:** Implementa un "spinner" (indicador de progreso) para las tareas que se ejecutan en segundo plano, mejorando la experiencia del usuario.
- **Registro (`Logging`):** Guarda un registro detallado de toda la sesión de instalación en el directorio `logs/`, lo que facilita la depuración en caso de errores.
- **Verificación del Sistema:** Comprueba que el script se está ejecutando en Arch Linux antes de proceder.
## 2. Módulos (`modules/`)
### 2.1. `common.sh`
Este script no es un módulo ejecutable desde el menú, sino una librería de funciones compartidas por todos los demás módulos.
- **Función Principal:** Centralizar el código común para evitar duplicaciones y mantener la consistencia.
- **Funciones Proporcionadas:**
- **Logs con Colores:** Funciones como `log_info`, `log_success`, `log_warning` y `log_error` para mostrar mensajes con un formato estandarizado.
- **Gestión de Paquetes:**
- `check_and_install_pkg`: Verifica si un paquete ya está instalado desde los repositorios oficiales y, si no, lo instala con `pacman`.
- `ensure_aur_helper` y `aur_install_packages`: Detectan un helper de AUR (como `yay` o `paru`), lo instalan si es necesario, y lo utilizan para instalar paquetes desde el Arch User Repository.
- **Copias de Seguridad:** La función `backup_file` renombra un archivo existente (ej. `.zshrc`) a `.zshrc.bak_FECHA` antes de sobrescribirlo, para prevenir la pérdida de configuraciones del usuario.
- **Verificaciones:** `command_exists` comprueba si un comando está disponible en el sistema.
### 2.2. `apps.sh`
Es uno de los módulos más extensos y se encarga de la instalación de un conjunto base de aplicaciones y herramientas.
- **Función Principal:** Instalar software esencial de diversas categorías.
- **Software Instalado:**
- **Base del Sistema:** `git`, `curl`, `htop`, `btop`, `stow`, `gnome-keyring`, `openssh`, etc.
- **Desarrollo:** `python`, `pip`, `nodejs`, `npm`, `arduino-cli`. También instala `nvm` (Node Version Manager) y `Homebrew` para una gestión de paquetes más flexible.
- **Multimedia:** VLC (y sus codecs), Audacity, Inkscape, `yt-dlp` para descargar vídeos.
- **Red:** FileZilla, Telegram, `speedtest-cli`.
- **AUR:** Visual Studio Code, Cursor, Keyd, Fragments, Logiops, TeamViewer, Antigravity, OpenCode.
- **Drivers para Intel Iris Xe:** Instala todos los paquetes necesarios para el correcto funcionamiento de los gráficos integrados de Intel, incluyendo `mesa`, `vulkan-intel`, y los drivers para la aceleración de vídeo por hardware (VA-API).
- **Configuraciones Adicionales:**
- Habilita y configura servicios del sistema como `gnome-keyring-daemon` (para gestión de contraseñas y claves SSH), `keyd` y `logiops` (para teclados y ratones avanzados), `teamviewer` y `tlp` (para la gestión avanzada de energía y optimización de la batería).
### 2.3. `zsh-config.sh`
Este módulo personaliza la experiencia del shell del usuario.
- **Función Principal:** Configurar Zsh como el shell principal con una apariencia y funcionalidad mejoradas.
- **Acciones Realizadas:**
- **Instalación:** Instala `zsh`, `zsh-completions` y otras utilidades.
- **Oh My Zsh:** Instala el framework "Oh My Zsh" para la gestión de plugins.
- **Plugins:** Añade plugins populares como `zsh-autosuggestions` (sugiere comandos mientras escribes) y `zsh-syntax-highlighting` (colorea la sintaxis de los comandos).
- **Oh My Posh:** Instala esta herramienta para crear un prompt de terminal altamente personalizable y descarga un tema predefinido (Catppuccin Frappe).
- **.zshrc:** Reemplaza el `~/.zshrc` del usuario por una versión pre-configurada que integra todas estas herramientas y añade alias y funciones útiles, incluyendo una función `zsh_help` que muestra una lista de todos los comandos personalizados.
- **Shell por Defecto:** Cambia el shell de inicio de sesión del usuario a Zsh.
### 2.4. `docker.sh`
Configura un entorno de desarrollo basado en contenedores.
- **Función Principal:** Instalar y configurar Docker Engine y Docker Compose.
- **Acciones Realizadas:**
- **Instalación:** Instala los paquetes `docker` y `docker-compose`.
- **Servicio:** Habilita e inicia el servicio (`daemon`) de Docker para que se ejecute automáticamente al iniciar el sistema.
- **Permisos:** Agrega el usuario actual al grupo `docker`, permitiéndole ejecutar comandos de Docker sin necesidad de `sudo`.
- **Portainer (Opcional):** Pregunta al usuario si desea instalar Portainer, una interfaz gráfica web para gestionar contenedores, imágenes y volúmenes de Docker.
### 2.5. `disk-format.sh`
Añade soporte para sistemas de archivos comunes.
- **Función Principal:** Instalar las herramientas necesarias para interactuar con particiones y discos formateados en sistemas de archivos no nativos de Linux.
- **Soporte Añadido:**
- `ntfs-3g`: Para leer y escribir en particiones NTFS (Windows).
- `exfatprogs`: Para particiones exFAT, comunes en tarjetas SD y unidades USB.
- `e2fsprogs`: Herramientas para el sistema de archivos nativo de Linux (ext4).
### 2.6. `hyprland-config.sh`
Configura un entorno de escritorio basado en el gestor de ventanas Hyprland.
- **Función Principal:** Instalar Hyprland y un conjunto de aplicaciones y configuraciones para tener un entorno de "tiling window manager" funcional y estético.
- **Software Adicional:** Instala componentes como `waybar` (barra de estado), `wofi` (lanzador de aplicaciones), `swaylock` (bloqueo de pantalla), y `kitty` (emulador de terminal).
- **Configuración:** Despliega una estructura de archivos de configuración predefinida para todos estos componentes.
### 2.7. `icon_manager.sh`
Permite personalizar la apariencia del sistema.
- **Función Principal:** Instalar y aplicar diferentes temas de iconos.
- **Temas Disponibles:** Ofrece una selección de temas populares como Papirus y Tela, instalándolos desde los repositorios de Arch o AUR.
- **Aplicación:** Utiliza `gsettings` para cambiar el tema de iconos activo en el entorno de escritorio.
### 2.8. `mouse_cursor.sh`
Mejora la apariencia del cursor del ratón.
- **Función Principal:** Instalar y configurar el tema de cursores Bibata.
- **Acciones Realizadas:** Descarga e instala el tema, y luego lo establece como el predeterminado para las aplicaciones GTK y el servidor gráfico X11.
### 2.9. `printer.sh`
Configura el sistema para poder utilizar impresoras.
- **Función Principal:** Instalar el sistema de impresión CUPS y los drivers necesarios.
- **Acciones Realizadas:**
- **CUPS:** Instala el servidor de impresión CUPS y sus filtros.
- **Drivers:** Instala drivers genéricos y específicos para impresoras Epson.
- **Servicios:** Habilita los servicios de `cups` y `avahi` (para la detección de impresoras en red).
- **Permisos:** Añade al usuario al grupo `lp` para permitirle administrar impresoras.
### 2.10. `ssh-keyring.sh`
Mejora la gestión de claves SSH.
- **Función Principal:** Sincronizar las claves SSH del usuario con el agente de GNOME Keyring.
- **Funcionamiento:**
1. Verifica que el agente de `gnome-keyring` esté en ejecución.
2. Busca todas las claves SSH privadas en el directorio `~/.ssh/`.
3. Utiliza `ssh-add` para añadir cada clave al agente. La primera vez que se use cada clave, GNOME Keyring pedirá la contraseña y la almacenará de forma segura. En usos posteriores, la desbloqueará automáticamente.
- **Importancia:** Evita tener que escribir la contraseña de la clave SSH cada vez que se establece una conexión.
### 2.11. `zerotier.sh`
Instala una herramienta de VPN.
- **Función Principal:** Instalar y configurar el cliente de la VPN ZeroTier.
- **Acciones Realizadas:**
- **Instalación:** Instala el paquete `zerotier-one`.
- **Servicio:** Habilita e inicia el servicio de ZeroTier.
- **Unirse a Red (Opcional):** Pregunta al usuario si desea unirse a una red de ZeroTier y, en caso afirmativo, le pide el ID de la red.

156
Readme.md
View File

@@ -21,6 +21,7 @@ git clone https://github.com/marcogll/mg_dotfiles.git ~/Work/code/mg_dotfiles
# 2. Clonar y ejecutar el setup # 2. Clonar y ejecutar el setup
git clone https://github.com/marcogll/omarchy_setup.git git clone https://github.com/marcogll/omarchy_setup.git
cd omarchy_setup cd omarchy_setup
chmod +x omarchy-setup.sh
./omarchy-setup.sh ./omarchy-setup.sh
``` ```
@@ -37,7 +38,7 @@ omarchy_setup/
│ └── ... # Docker, ZeroTier, Impresoras, etc. │ └── ... # Docker, ZeroTier, Impresoras, etc.
├── doc_templates/ # Plantillas para ~/Templates ├── doc_templates/ # Plantillas para ~/Templates
├── themes/ # Temas de apoyo (Oh My Posh) ├── themes/ # Temas de apoyo (Oh My Posh)
└── install.md # Guía detallada de componentes └── installed_software.md # Lista detallada de componentes instalados
``` ```
## 🎮 Opciones del Menú ## 🎮 Opciones del Menú
@@ -47,21 +48,170 @@ omarchy_setup/
| **1** | **Aplicaciones** | Repositorios Arch/AUR/Flatpak | | **1** | **Aplicaciones** | Repositorios Arch/AUR/Flatpak |
| **2** | **Zsh Config** | Requiere `mg_dotfiles` | | **2** | **Zsh Config** | Requiere `mg_dotfiles` |
| **3** | **Docker** | Docker + Portainer (Web UI) | | **3** | **Docker** | Docker + Portainer (Web UI) |
| **5** | **Impresoras** | CUPS + Drivers |
| **6** | **Cursor** | Tema Bibata |
| **7** | **Iconos** | Gestor de temas interactivos |
| **S** | **Suspensión** | Activa opción en menú System |
| **H** | **Hyprland** | Requiere `mg_dotfiles` | | **H** | **Hyprland** | Requiere `mg_dotfiles` |
| **K** | **SSH Keyring** | Sincroniza llaves con GNOME | | **K** | **SSH Keyring** | Sincroniza llaves con gcr-ssh-agent |
| **F** | **Formatos Disco** | FAT/exFAT/NTFS/ext4 |
| **T** | **Plantillas** | Documentos en ~/Templates |
| **A** | **Instalar Todo** | Ejecuta la mayoría de los módulos | | **A** | **Instalar Todo** | Ejecuta la mayoría de los módulos |
---
## 📚 Documentación Técnica de Módulos
### 1. Script Principal: `omarchy-setup.sh`
Este es el script orquestador y el punto de entrada para el usuario.
- **Función Principal:** Proporcionar una interfaz de menú interactiva que permite al usuario seleccionar qué módulos de configuración desea ejecutar.
- **Características Clave:**
- **Menú Dinámico:** Muestra una lista de todos los módulos disponibles, permitiendo al usuario elegir uno, varios ("Instalar Todo") o salir.
- **Gestión de `sudo`:** Solicita la contraseña de `sudo` una vez y la mantiene activa en segundo plano para evitar que el usuario tenga que introducirla repetidamente.
- **Ejecución Modular:** Llama a las funciones principales de los scripts ubicados en el directorio `modules/`.
- **Feedback Visual:** Implementa un "spinner" (indicador de progreso) para las tareas que se ejecutan en segundo plano, mejorando la experiencia del usuario.
- **Registro (`Logging`):** Guarda un registro detallado de toda la sesión de instalación en el directorio `logs/`, lo que facilita la depuración en caso de errores.
- **Verificación del Sistema:** Comprueba que el script se está ejecutando en Arch Linux antes de proceder.
### 2. Módulos (`modules/`)
#### 2.1. `common.sh`
Este script no es un módulo ejecutable desde el menú, sino una librería de funciones compartidas por todos los demás módulos.
- **Función Principal:** Centralizar el código común para evitar duplicaciones y mantener la consistencia.
- **Funciones Proporcionadas:**
- **Logs con Colores:** Funciones como `log_info`, `log_success`, `log_warning` y `log_error` para mostrar mensajes con un formato estandarizado.
- **Gestión de Paquetes:**
- `check_and_install_pkg`: Verifica si un paquete ya está instalado desde los repositorios oficiales y, si no, lo instala con `pacman`.
- `ensure_aur_helper` y `aur_install_packages`: Detectan un helper de AUR (como `yay` o `paru`), lo instalan si es necesario, y lo utilizan para instalar paquetes desde el Arch User Repository.
- **Copias de Seguridad:** La función `backup_file` renombra un archivo existente (ej. `.zshrc`) a `.zshrc.bak_FECHA` antes de sobrescribirlo, para prevenir la pérdida de configuraciones del usuario.
- **Verificaciones:** `command_exists` comprueba si un comando está disponible en el sistema.
#### 2.2. `apps.sh`
Es uno de los módulos más extensos y se encarga de la instalación de un conjunto base de aplicaciones y herramientas.
- **Función Principal:** Instalar software esencial de diversas categorías.
- **Software Instalado:**
- **Base del Sistema:** `git`, `curl`, `htop`, `btop`, `stow`, `gnome-keyring`, `openssh`, etc.
- **Desarrollo:** `python`, `pip`, `nodejs`, `npm`, `arduino-cli`. También instala `nvm` (Node Version Manager) y `Homebrew` para una gestión de paquetes más flexible.
- **Multimedia:** VLC (y sus codecs), Audacity, Inkscape, `yt-dlp` para descargar vídeos.
- **Red:** FileZilla, Telegram, `speedtest-cli`.
- **AUR:** Visual Studio Code, Cursor, Keyd, Fragments, Logiops, TeamViewer, Antigravity, OpenCode.
- **Drivers para Intel Iris Xe:** Instala todos los paquetes necesarios para el correcto funcionamiento de los gráficos integrados de Intel, incluyendo `mesa`, `vulkan-intel`, y los drivers para la aceleración de vídeo por hardware (VA-API).
- **Configuraciones Adicionales:**
- Habilita y configura servicios del sistema como `gnome-keyring-daemon` (para gestión de contraseñas y claves SSH), `keyd` y `logiops` (para teclados y ratones avanzados), `teamviewer` y `tlp` (para la gestión avanzada de energía y optimización de la batería).
#### 2.3. `zsh-config.sh`
Este módulo personaliza la experiencia del shell del usuario.
- **Función Principal:** Configurar Zsh como el shell principal con una apariencia y funcionalidad mejoradas.
- **Acciones Realizadas:**
- **Instalación:** Instala `zsh`, `zsh-completions` y otras utilidades.
- **Oh My Zsh:** Instala el framework "Oh My Zsh" para la gestión de plugins.
- **Plugins:** Añade plugins populares como `zsh-autosuggestions` (sugiere comandos mientras escribes) y `zsh-syntax-highlighting` (colorea la sintaxis de los comandos).
- **Oh My Posh:** Instala esta herramienta para crear un prompt de terminal altamente personalizable y descarga un tema predefinido (Catppuccin Frappe).
- **.zshrc:** Reemplaza el `~/.zshrc` del usuario por una versión pre-configurada que integra todas estas herramientas y añade alias y funciones útiles, incluyendo una función `zsh_help` que muestra una lista de todos los comandos personalizados.
- **Shell por Defecto:** Cambia el shell de inicio de sesión del usuario a Zsh.
#### 2.4. `docker.sh`
Configura un entorno de desarrollo basado en contenedores.
- **Función Principal:** Instalar y configurar Docker Engine y Docker Compose.
- **Acciones Realizadas:**
- **Instalación:** Instala los paquetes `docker` y `docker-compose`.
- **Servicio:** Habilita e inicia el servicio (`daemon`) de Docker para que se ejecute automáticamente al iniciar el sistema.
- **Permisos:** Agrega el usuario actual al grupo `docker`, permitiéndole ejecutar comandos de Docker sin necesidad de `sudo`.
- **Portainer (Opcional):** Pregunta al usuario si desea instalar Portainer, una interfaz gráfica web para gestionar contenedores, imágenes y volúmenes de Docker.
#### 2.5. `disk-format.sh`
Añade soporte para sistemas de archivos comunes.
- **Función Principal:** Instalar las herramientas necesarias para interactuar con particiones y discos formateados en sistemas de archivos no nativos de Linux.
- **Soporte Añadido:**
- `ntfs-3g`: Para leer y escribir en particiones NTFS (Windows).
- `exfatprogs`: Para particiones exFAT, comunes en tarjetas SD y unidades USB.
- `e2fsprogs`: Herramientas para el sistema de archivos nativo de Linux (ext4).
#### 2.6. `hyprland-config.sh`
Configura un entorno de escritorio basado en el gestor de ventanas Hyprland.
- **Función Principal:** Instalar Hyprland y un conjunto de aplicaciones y configuraciones para tener un entorno de "tiling window manager" funcional y estético.
- **Software Adicional:** Instala componentes como `waybar` (barra de estado), `wofi` (lanzador de aplicaciones), `swaylock` (bloqueo de pantalla), y `kitty` (emulador de terminal).
- **Configuración:** Despliega una estructura de archivos de configuración predefinida para todos estos componentes.
#### 2.7. `icon_manager.sh`
Permite personalizar la apariencia del sistema.
- **Función Principal:** Instalar y aplicar diferentes temas de iconos.
- **Temas Disponibles:** Ofrece una selección de temas populares como Papirus y Tela, instalándolos desde los repositorios de Arch o AUR.
- **Aplicación:** Utiliza `gsettings` para cambiar el tema de iconos activo en el entorno de escritorio.
#### 2.8. `mouse_cursor.sh`
Mejora la apariencia del cursor del ratón.
- **Función Principal:** Instalar y configurar el tema de cursores Bibata.
- **Acciones Realizadas:** Descarga e instala el tema, y luego lo establece como el predeterminado para las aplicaciones GTK y el servidor gráfico X11.
#### 2.9. `printer.sh`
Configura el sistema para poder utilizar impresoras.
- **Función Principal:** Instalar el sistema de impresión CUPS y los drivers necesarios.
- **Acciones Realizadas:**
- **CUPS:** Instala el servidor de impresión CUPS y sus filtros.
- **Drivers:** Instala drivers genéricos y específicos para impresoras Epson.
- **Servicios:** Habilita los servicios de `cups` y `avahi` (para la detección de impresoras en red).
- **Permisos:** Añade al usuario al grupo `lp` para permitirle administrar impresoras.
#### 2.10. `ssh-keyring.sh`
Mejora la gestión de claves SSH.
- **Función Principal:** Sincronizar las claves SSH del usuario con el agente gcr-ssh-agent.
- **Funcionamiento:**
1. Habilita e inicia el servicio `gcr-ssh-agent.socket` (el componente SSH que ahora está en `gcr` en lugar de `gnome-keyring`).
2. Configura la variable de entorno `SSH_AUTH_SOCK` para apuntar a `$XDG_RUNTIME_DIR/gcr/ssh`.
3. Busca todas las claves SSH privadas en el directorio `~/.ssh/`.
4. Utiliza `ssh-add` para añadir cada clave al agente. La primera vez que se use cada clave, gcr-ssh-agent pedirá la contraseña y la almacenará de forma segura. En usos posteriores, la desbloqueará automáticamente.
- **Importancia:** Evita tener que escribir la contraseña de la clave SSH cada vez que se establece una conexión.
- **Nota:** A partir de gnome-keyring 46.0+, la funcionalidad SSH fue movida a `gcr`, por lo que este módulo ahora usa `gcr-ssh-agent` en lugar del componente SSH de `gnome-keyring`.
#### 2.11. `zerotier.sh`
Instala una herramienta de VPN.
- **Función Principal:** Instalar y configurar el cliente de la VPN ZeroTier.
- **Acciones Realizadas:**
- **Instalación:** Instala el paquete `zerotier-one`.
- **Servicio:** Habilita e inicia el servicio de ZeroTier.
- **Unirse a Red (Opcional):** Pregunta al usuario si desea unirse a una red de ZeroTier y, en caso afirmativo, le pide el ID de la red.
---
## 📝 Notas Importantes ## 📝 Notas Importantes
- **Dotfiles**: Este script ahora es **opinionated**. Si no encuentra `mg_dotfiles` en la ruta configurada en `common.sh`, los módulos de Zsh e Hyprland fallarán. - **Dotfiles**: Este script ahora es **opinionated**. Si no encuentra `mg_dotfiles` en la ruta configurada en `common.sh`, los módulos de Zsh e Hyprland fallarán.
- **Fuentes**: Es imprescindible usar una **Nerd Font** (ej: `CaskaydiaMono NF`) para que los iconos de la terminal y Hyprland se visualicen correctamente. - **Fuentes**: Es imprescindible usar una **Nerd Font** (ej: `CaskaydiaMono NF` o `ttf-firacode-nerd`) para que los iconos de la terminal y Hyprland se visualicen correctamente.
- **Reinicio**: Tras la instalación de Docker o el cambio de Shell, es necesario **cerrar sesión** para aplicar los cambios de grupos y entorno. - **Reinicio**: Tras la instalación de Docker o el cambio de Shell, es necesario **cerrar sesión** para aplicar los cambios de grupos y entorno.
- **Logs**: Cada ejecución genera un log en `logs/omarchy-setup-YYYY-MM-DD_HH-MM-SS.log`
## 🛠️ Desarrollo ## 🛠️ Desarrollo
Para añadir una funcionalidad: Para añadir una funcionalidad:
1. Crea un script en `modules/`. 1. Crea un script en `modules/`.
2. Regístralo en el array `MODULES` de `omarchy-setup.sh`. 2. Regístralo en el array `MODULES` de `omarchy-setup.sh`.
3. Actualiza la documentación técnica y `installed_software.md` con los nuevos componentes.
--- ---
**Marco** - [GitHub](https://github.com/marcogll) | [mg_dotfiles](https://github.com/marcogll/mg_dotfiles) **Marco** - [GitHub](https://github.com/marcogll) | [mg_dotfiles](https://github.com/marcogll/mg_dotfiles)

View File

@@ -1,62 +0,0 @@
# 🌀 Guía de Instalación - Omarchy Setup
Este script modular automatiza la configuración de Arch Linux, vinculando tus **dotfiles personales** e instalando aplicaciones esenciales.
## 🚀 Requisitos Previos
1. **Sistema Operativo:** Arch Linux (instalación base).
2. **Repositorio de Dotfiles:** Debes tener clonado tu repositorio personal en `~/Work/code/mg_dotfiles`.
3. **Git:** Para clonar los repositorios (`sudo pacman -S git`).
## 📥 Instalación
El proceso recomendado consta de dos pasos: preparar tus dotfiles y ejecutar el setup.
### 1. Clonar Dotfiles (Obligatorio para Zsh/Hyprland)
El script buscará la configuración en esta ruta específica:
```bash
mkdir -p ~/Work/code
git clone https://github.com/marcogll/mg_dotfiles.git ~/Work/code/mg_dotfiles
```
### 2. Ejecutar Omarchy Setup
```bash
git clone https://github.com/marcogll/omarchy_setup.git
cd omarchy_setup
chmod +x omarchy-setup.sh
./omarchy-setup.sh
```
## 🛠️ Uso del Script
Al ejecutar `./omarchy-setup.sh`, verás un menú interactivo:
1. **Instalar Aplicaciones:** Herramientas base, desarrollo (Node, Python), multimedia y drivers Intel.
2. **Configurar Zsh:** Enlaza `.zshrc` desde `mg_dotfiles` e instala Oh My Zsh/Posh.
3. **Docker:** Instala Docker, Docker Compose y Portainer.
4. **ZeroTier:** Configura la VPN P2P ZeroTier.
5. **Impresoras:** Configura CUPS y drivers (especialmente Epson).
6. **Cursor:** Instala el tema de cursor Bibata Modern Ice.
7. **Iconos:** Gestor de temas de iconos (Tela, Papirus, Candy).
* **K:** Sincronizar claves SSH con GNOME Keyring.
* **F:** Soporte para formatos de disco (NTFS, exFAT, etc.).
* **H:** Configuración de Hyprland (enlaza desde `mg_dotfiles`).
* **T:** Plantillas de documentos.
* **A) Instalar Todo:** Ejecuta la mayoría de los módulos automáticamente.
## 📝 Notas Importantes
* **Enlace Simbólico:** Las configuraciones de **Zsh** y **Hyprland** se crean como enlaces simbólicos a `mg_dotfiles`. Cualquier cambio que hagas en tus archivos originales se reflejará inmediatamente.
* **Fuentes:** Asegúrate de instalar una **Nerd Font** (ej. `ttf-firacode-nerd`) para que los iconos se vean correctamente.
* **Reiniciar:** Cierra sesión después de instalar para aplicar cambios de grupos (Docker) y variables de entorno.
## 📂 Estructura
* `omarchy-setup.sh`: Script principal.
* `modules/`: Scripts individuales para cada tarea.
* `doc_templates/`: Plantillas de documentos.
* `themes/`: Temas de apoyo (ej. configuraciones por defecto de Oh My Posh).

207
installed_software.md Normal file
View File

@@ -0,0 +1,207 @@
# 📦 Lista de Software Instalado - Omarchy Setup
Este documento lista todos los componentes que se instalan al ejecutar el script `omarchy-setup.sh` en orden de ejecución. Sirve como referencia para el equipo para entender qué software se configura en un nuevo equipo y para mantener actualizada la lista de aplicaciones necesarias.
> **Nota**: Para ver la documentación técnica detallada de cada módulo, consulta el archivo `Readme.md`.
---
## 📦 Opción 1: Instalar Aplicaciones
### Paquetes instalados desde Pacman:
- `base-devel`: Herramientas de desarrollo base
- `git`: Control de versiones
- `curl` y `wget`: Descarga de archivos
- `vim`: Editor de texto
- `neovim`: Editor de texto moderno
- `tree`: Visualizador de directorios en árbol
- `htop`: Monitor de procesos
- `btop`: Monitor de procesos mejorado
- `ripgrep` (rg): Buscador de archivos rápido
- `fd`: Buscador de archivos alternativo
- `bat`: Clon de cat con mejoras
- `eza`: Alternativa moderna a ls
- `fzf`: Buscador interactivo
- `tmux`: Terminal multiplexor
- `jq`: Procesador JSON
- `unzip`: Descompresor ZIP
- `p7zip`: Descompresor 7z
- `zip`: Compresor ZIP
- `xdg-utils`: Herramientas de integración con el escritorio
- `bluez` y `bluez-utils`: Soporte Bluetooth
- `pipewire` y `wireplumber`: Audio y video
- `noto-fonts`: Fuente base
- `noto-fonts-cjk`: Fuentes CJK (Chino, Japonés, Coreano)
- `ttf-firacode-nerd`: Fuente con iconos Nerd
- `intel-media-driver`: Drivers para GPU Intel
### Paquetes instalados desde AUR:
- `google-chrome`: Navegador web
- `visual-studio-code-bin`: Editor de código
- `code-marketplace`: Extensión para VS Code marketplace
- `v3dv-git`: Drivers para Raspberry Pi
- `xdg-desktop-portal-hyprland`: Portal para Hyprland
### Paquetes instalados desde Flatpak:
- VLC: Reproductor multimedia
- LibreOffice: Suite ofimática
---
## 🐚 Opción 2: Configurar Zsh
### Pasos realizados:
1. Instala `zsh` desde pacman
2. Cambia el shell del usuario a Zsh
3. Clona `oh-my-zsh` en `~/.oh-my-zsh`
4. Instala `oh-my-posh` desde binario
5. Descarga tema de Oh My Posh (CaskaydiaCove)
6. Crea enlace simbólico de `~/.zshrc` desde `mg_dotfiles`
7. Instala plugins de Zsh: `zsh-autosuggestions`, `zsh-syntax-highlighting`, `zsh-completions`
---
## 🐳 Opción 3: Docker
### Pasos realizados:
1. Instala `docker` y `docker-compose`
2. Instala Portainer como contenedor Docker
3. Habilita e inicia el servicio Docker
4. Configura permisos para el usuario actual
---
## 🌐 Opción 4: ZeroTier
### Pasos realizados:
1. Agrega la clave GPG de ZeroTier
2. Agrega repositorio de ZeroTier
3. Actualiza repositorios
4. Instala `zerotier-one`
5. Habilita e inicia el servicio ZeroTier
---
## 🖨️ Opción 5: Impresoras
### Pasos realizados:
1. Instala `cups` (sistema de impresión)
2. Instala `system-config-printer` (configuración gráfica)
3. Instala `hplip` (drivers HP)
4. Instala `epson-inkjet-printer-201207w` (drivers Epson)
5. Habilita e inicia el servicio `org.cups.cupsd`
6. Inicia el servicio `avahi-daemon` (para descubrimiento de impresoras en red)
7. Añade el usuario al grupo `sys` y `lp`
---
## 🖱️ Opción 6: Cursor
### Pasos realizados:
1. Descarga tema de cursor Bibata Modern Ice desde GitHub
2. Descomprime en `/usr/share/icons`
3. Ejecuta `update-alternatives` para configurar el cursor por defecto
---
## 🎨 Opción 7: Iconos (Gestor Interactivo)
### Pasos realizados:
1. Presenta menú para seleccionar tema de iconos:
- Tela (Opciones: blue, brown, cyan, dark, grey, orange, pink, purple, red, teal, violet, yellow)
- Papirus (Opciones: dark, light, red, violet, adwaita)
- Candy (Opciones: dark, light, blue, orange, purple, teal, yellow)
2. Descarga el tema seleccionado desde GitHub
3. Instala el tema en `~/.local/share/icons`
---
## 🎨 Opción 7D: Iconos por Defecto
### Pasos realizados:
1. Descarga e instala tema Tela Nord por defecto
2. No requiere interacción del usuario
---
## 🌙 Opción S: Activar Suspensión
### Pasos realizados:
1. Verifica que el comando `omarchy-toggle-suspend` existe
2. Ejecuta `omarchy-toggle-suspend` para crear el archivo de estado `~/.local/state/omarchy/toggles/suspend-on`
3. Notifica que la opción "Suspend" ahora está disponible en el menú System (Super+Esc)
---
## 🔐 Opción K: SSH Keyring
### Pasos realizados:
1. Verifica que `ssh-add` está disponible (openssh)
2. Habilita e inicia el servicio `gcr-ssh-agent.socket`
3. Configura `SSH_AUTH_SOCK` en `$XDG_RUNTIME_DIR/gcr/ssh`
4. Busca todas las claves SSH privadas en `~/.ssh/`
5. Añade cada clave al agente usando `ssh-add`
6. La primera vez, gcr-ssh-agent pide la passphrase y la guarda en el keyring
7. En futuras conexiones, desbloquea automáticamente la clave
---
## 💾 Opción F: Formatos de Disco
### Pasos realizados:
1. Instala `dosfstools`: Soporte para FAT32
2. Instala `exfatprogs`: Soporte para exFAT
3. Instala `ntfs-3g`: Soporte para NTFS
4. Instala `e2fsprogs`: Soporte para ext4 (ya incluido en Arch base)
---
## 🎨 Opción H: Hyprland
### Pasos realizados:
1. Verifica que existe el directorio `mg_dotfiles/omarchy/hypr`
2. Crea copia de seguridad si ya existe configuración en `~/.config/hypr`
3. Crea enlace simbólico desde `mg_dotfiles/omarchy/hypr` a `~/.config/hypr`
4. Instala tema de iconos Tela Nord por defecto
5. Activa opción de suspensión en el menú System (ejecuta `omarchy-toggle-suspend`)
---
## 📄 Opción T: Plantillas de Documentos
### Pasos realizados:
1. Crea directorio `~/Templates` si no existe
2. Copia plantillas de documentos desde `doc_templates/`:
- Plantillas de archivos bash
- Plantillas de archivos markdown
- Plantillas para otros formatos disponibles
---
## ✅ Opción A: Instalar Todo
### Ejecuta los siguientes módulos:
1. Instalar Aplicaciones
2. Configurar Zsh
3. Docker
4. ZeroTier
5. Impresoras
6. Cursor
7D. Iconos por Defecto (Tela Nord)
S. Suspensión
K. SSH Keyring
F. Formatos de Disco
H. Hyprland
T. Plantillas de Documentos
**Nota:** No ejecuta la opción 7 (Gestor Interactivo de Iconos) porque requiere selección manual.
---
## 📝 Notas para el Equipo
- **Actualización de este documento**: Cuando se agreguen nuevos módulos o software a los scripts existentes, actualizar este archivo para mantener la lista sincronizada.
- **Dotfiles**: Las configuraciones de Zsh y Hyprland se crean como enlaces simbólicos a `mg_dotfiles`. Cualquier cambio en los archivos originales se refleja inmediatamente.
- **Fuentes**: Asegurarse de instalar una **Nerd Font** para que los iconos se vean correctamente.
- **Reiniciar**: Cerrar sesión después de instalar para aplicar cambios de grupos (Docker) y variables de entorno.
- **Logs**: Cada ejecución genera un log en `logs/omarchy-setup-YYYY-MM-DD_HH-MM-SS.log`

1
mg_dotfiles Submodule

Submodule mg_dotfiles added at 3b0a88b29e

View File

@@ -51,6 +51,18 @@ run_module_main() {
# Llamamos a la función específica de icon_manager.sh # Llamamos a la función específica de icon_manager.sh
set_default_icon_theme set_default_icon_theme
# --- 3. Activar opción de suspensión en el menú System ---
log_info "Activando opción de suspensión en el menú System..."
if command -v omarchy-toggle-suspend &>/dev/null; then
if omarchy-toggle-suspend; then
log_success "Opción de suspensión activada en el menú System."
else
log_warning "No se pudo activar la opción de suspensión, pero la configuración de Hyprland se instaló correctamente."
fi
else
log_warning "Comando omarchy-toggle-suspend no encontrado. Omitiendo activación de suspensión."
fi
log_success "Configuración de Hyprland instalada correctamente." log_success "Configuración de Hyprland instalada correctamente."
log_warning "Por favor, cierra sesión y vuelve a iniciarla para aplicar los cambios." log_warning "Por favor, cierra sesión y vuelve a iniciarla para aplicar los cambios."
return 0 return 0

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# =============================================================== # ===============================================================
# ssh-keyring.sh - Sincronizar claves SSH con GNOME Keyring # ssh-keyring.sh - Sincronizar claves SSH con gcr-ssh-agent
# =============================================================== # ===============================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
@@ -20,12 +20,7 @@ _derive_fingerprint() {
} }
sync_ssh_keyring() { sync_ssh_keyring() {
log_step "Sincronizar claves SSH con GNOME Keyring" log_step "Sincronizar claves SSH con gcr-ssh-agent"
if ! command_exists gnome-keyring-daemon; then
log_error "gnome-keyring-daemon no está instalado. Ejecuta primero el módulo de aplicaciones."
return 1
fi
if ! command_exists ssh-add; then if ! command_exists ssh-add; then
log_error "ssh-add no está disponible (openssh). Instala el módulo de aplicaciones antes." log_error "ssh-add no está disponible (openssh). Instala el módulo de aplicaciones antes."
@@ -34,32 +29,40 @@ sync_ssh_keyring() {
mkdir -p "${HOME}/.config/environment.d" mkdir -p "${HOME}/.config/environment.d"
cat <<'EOF' > "${HOME}/.config/environment.d/10-gnome-keyring.conf" cat <<'EOF' > "${HOME}/.config/environment.d/10-gnome-keyring.conf"
SSH_AUTH_SOCK=/run/user/$UID/keyring/ssh SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/gcr/ssh
EOF EOF
# No intentamos iniciar el daemon. Después de un reinicio de sesión, ya debería estar activo. log_info "Verificando servicio gcr-ssh-agent.socket..."
log_info "Buscando el socket del agente de GNOME Keyring..."
# Obtenemos el UID del usuario dueño del directorio HOME. Este método es más fiable. if ! systemctl --user is-enabled gcr-ssh-agent.socket &>/dev/null; then
local target_uid log_info "Habilitando gcr-ssh-agent.socket..."
target_uid=$(stat -c '%u' "$HOME") systemctl --user enable gcr-ssh-agent.socket
local keyring_socket="/run/user/${target_uid}/keyring/ssh"
# Obtenemos el UID del usuario dueño del directorio HOME. Este método es más fiable.
local target_uid
target_uid=$(stat -c '%u' "$HOME")
local keyring_socket="/run/user/${target_uid}/keyring/ssh"
if [[ ! -S "$keyring_socket" ]]; then
log_error "No se encontró el socket de GNOME Keyring en la ruta esperada: ${keyring_socket}"
log_warning "Esto usualmente significa que el servicio no se ha iniciado correctamente con tu sesión de escritorio."
log_info "Asegúrate de haber cerrado y vuelto a abrir tu sesión después de instalar el módulo de aplicaciones."
return 1
fi fi
log_success "Socket de GNOME Keyring encontrado en: ${keyring_socket}" if ! systemctl --user is-active gcr-ssh-agent.socket &>/dev/null; then
log_info "Iniciando gcr-ssh-agent.socket..."
systemctl --user start gcr-ssh-agent.socket
fi
log_info "Buscando el socket del agente GCR SSH..."
local target_uid
target_uid=$(stat -c '%u' "$HOME")
local keyring_socket="/run/user/${target_uid}/gcr/ssh"
if [[ ! -S "$keyring_socket" ]]; then
log_error "No se encontró el socket de gcr-ssh-agent en la ruta esperada: ${keyring_socket}"
log_warning "Intentando activar el socket solicitando el servicio..."
if SSH_AUTH_SOCK="$keyring_socket" ssh-add -l &>/dev/null; then
log_success "Socket de gcr-ssh-agent activado correctamente."
else
log_error "No se pudo activar el socket. Revisa la configuración de gcr-ssh-agent."
return 1
fi
fi
log_success "Socket de gcr-ssh-agent encontrado en: ${keyring_socket}"
export SSH_AUTH_SOCK="$keyring_socket" export SSH_AUTH_SOCK="$keyring_socket"
local ssh_dir="${HOME}/.ssh" local ssh_dir="${HOME}/.ssh"
@@ -120,7 +123,7 @@ EOF
done done
if [[ $added -gt 0 ]]; then if [[ $added -gt 0 ]]; then
log_success "Claves SSH sincronizadas con GNOME Keyring." log_success "Claves SSH sincronizadas con gcr-ssh-agent."
else else
log_info "No se añadieron nuevas claves SSH." log_info "No se añadieron nuevas claves SSH."
fi fi

42
modules/suspend.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
# ===============================================================
# suspend.sh - Activa la opción de suspensión en el menú System
# ===============================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/common.sh"
run_module_main() {
log_step "Activación de Opción de Suspensión"
# Verificar que el comando existe
if ! command -v omarchy-toggle-suspend &>/dev/null; then
log_error "El comando 'omarchy-toggle-suspend' no está disponible."
log_info "Este comando es parte de Omarchy y debe estar instalado."
return 1
fi
# Verificar estado actual del archivo de toggle
local suspend_file="$HOME/.local/state/omarchy/toggles/suspend-on"
if [[ -f "$suspend_file" ]]; then
log_info "La opción de suspensión ya está activa en el menú System."
log_info "Para desactivarla, puedes ejecutar: omarchy-toggle-suspend"
return 0
fi
# Activar suspensión
log_info "Activando opción de suspensión en el menú System..."
if omarchy-toggle-suspend; then
log_success "Opción de suspensión activada correctamente."
log_info "Ahora puedes usar Super+Esc para acceder al menú System y seleccionar Suspend."
return 0
else
log_error "Error al activar la opción de suspensión."
return 1
fi
}
# Ejecutar si se llama directamente
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
run_module_main "$@"
fi

View File

@@ -132,6 +132,7 @@ MODULES=(
["6"]="mouse_cursor;install_mouse_cursor;🖱️ Instalar Tema de Cursor (Bibata);bg" ["6"]="mouse_cursor;install_mouse_cursor;🖱️ Instalar Tema de Cursor (Bibata);bg"
["7"]="icon_manager;run_module_main;🎨 Gestionar Temas de Iconos (Papirus, Tela, etc.);fg" ["7"]="icon_manager;run_module_main;🎨 Gestionar Temas de Iconos (Papirus, Tela, etc.);fg"
["7D"]="icon_manager;set_default_icon_theme;🎨 Instalar Tema de Iconos por Defecto;bg" ["7D"]="icon_manager;set_default_icon_theme;🎨 Instalar Tema de Iconos por Defecto;bg"
["S"]="suspend;run_module_main;🌙 Activar Suspensión en Menú System;bg"
["K"]="ssh-keyring;sync_ssh_keyring;🔐 Sincronizar claves SSH con GNOME Keyring;fg" ["K"]="ssh-keyring;sync_ssh_keyring;🔐 Sincronizar claves SSH con GNOME Keyring;fg"
["F"]="disk-format;run_module_main;💾 Habilitar Formatos FAT/exFAT/NTFS/ext4;bg" ["F"]="disk-format;run_module_main;💾 Habilitar Formatos FAT/exFAT/NTFS/ext4;bg"
["H"]="hyprland-config;run_module_main;🎨 Instalar Configuración de Hyprland;bg" ["H"]="hyprland-config;run_module_main;🎨 Instalar Configuración de Hyprland;bg"