Script de configuración modular y personalizado para Arch Linux / Omarchy. Esta herramienta automatiza la instalación de aplicaciones y la vinculación de mis dotfiles personales.
- mg_dotfiles integrado: Los dotfiles ahora están incluidos directamente en el directorio
mg_dotfiles/de este repositorio, eliminando la dependencia de un repositorio externo. - Seguridad mejorada: Se agregó
.zshrc.local.examplecomo plantilla para configuraciones locales sin incluir secretos en el repositorio. - Archivos sensibles:
.zshrc.localse encuentra en.gitignorepara evitar subir API keys accidentalmente.
- 📦 Arquitectura Modular: Scripts independientes para cada componente del sistema.
- 🔗 Integración con Dotfiles: Vincula automáticamente configuraciones de Zsh y Hyprland desde el directorio
mg_dotfiles/incluido en este repositorio. - 🎨 Menú Interactivo: Selecciona exactamente qué componentes deseas configurar.
- 🔐 Seguridad y Persistencia: Gestión de sudo optimizada y sincronización con GNOME Keyring.
# Clonar y ejecutar el setup
git clone https://github.com/marcogll/omarchy_setup.git
cd omarchy_setup
chmod +x omarchy-setup.sh
./omarchy-setup.shomarchy_setup/
├── omarchy-setup.sh # Script principal (Menú)
├── modules/ # Scripts de instalación lógica
│ ├── common.sh # Funciones compartidas y RUTAS (DOTFILES_DIR)
│ ├── apps.sh # Apps base, Dev, Multimedia y Drivers Intel
│ ├── zsh-config.sh # Enlaza .zshrc y funciones desde mg_dotfiles
│ ├── hyprland-config.sh # Enlaza configs de Hyprland desde mg_dotfiles
│ └── ... # Docker, ZeroTier, Impresoras, etc.
├── mg_dotfiles/ # Dotfiles personales (Zsh, Hyprland, Neovim)
│ ├── zsh/ # Configuración de Zsh
│ ├── omarchy/hypr/ # Configuración de Hyprland
│ └── nvim/ # Configuración de Neovim (LazyVim)
├── doc_templates/ # Plantillas para ~/Templates
├── themes/ # Temas de apoyo (Oh My Posh)
└── installed_software.md # Lista detallada de componentes instalados
| Opción | Descripción | Dependencia |
|---|---|---|
| 1 | Aplicaciones | Repositorios Arch/AUR/Flatpak/Homebrew |
| 2 | Zsh Config | Usa mg_dotfiles/ incluido |
| 3 | Docker | Docker + Portainer (Web UI) |
| 5 | Impresoras | CUPS + Drivers Epson |
| 6 | Cursor | Tema Bibata Modern Ice |
| 7 | Iconos | Gestor de temas interactivos (Tela, Papirus, Candy) |
| 7D | Iconos por Defecto | Tela Nord (automático) |
| S | Suspensión | Activa opción en menú System |
| H | Hyprland | Usa mg_dotfiles/ incluido |
| K | SSH Keyring | Sincroniza llaves con gcr-ssh-agent (GNOME 46+) |
| F | Formatos Disco | FAT/exFAT/NTFS/ext4 |
| T | Plantillas | Documentos en ~/Templates |
| A | Instalar Todo | Ejecuta la mayoría de los módulos |
Nota: Neovim debe instalarse manualmente (ej:
paru -S neovim-git) y su configuración está disponible enmg_dotfiles/nvim/.
Este repositorio incluye configuraciones personalizadas en el directorio mg_dotfiles/:
- Zsh: Configuración del shell con Oh My Zsh, Oh My Posh, plugins y alias personalizados
- Zsh Local:
.zshrc.local.examplepara configuraciones personales sin secretos - Hyprland: Configuración completa del gestor de ventanas tiling y componentes relacionados
- Neovim: Configuración personalizada de Neovim con plugins y LazyVim (ubicado en
mg_dotfiles/nvim/)
Para agregar configuraciones personales y API keys:
# Copiar plantilla de ejemplo
cp mg_dotfiles/zsh/.zshrc.local.example ~/.zshrc.local
# Editar ~/.zshrc.local para agregar tus configuraciones y API keysPara usar la configuración de Neovim:
# Crea un enlace simbólico a nvim incluido en mg_dotfiles/
ln -s $(pwd)/mg_dotfiles/nvim ~/.config/nvimEste 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 desudouna 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 directoriologs/, 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.
- Verificación de Dependencias: Verifica que
mg_dotfilesexista en la ruta esperada antes de ejecutar módulos que lo requieren.
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_warningylog_errorpara 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 conpacman.ensure_aur_helperyaur_install_packages: Detectan un helper de AUR (comoyayoparu), lo instalan si es necesario, y lo utilizan para instalar paquetes desde el Arch User Repository.
- Copias de Seguridad: La función
backup_filerenombra un archivo existente (ej..zshrc) a.zshrc.bak_FECHAantes de sobrescribirlo, para prevenir la pérdida de configuraciones del usuario. - Verificaciones:
command_existscomprueba si un comando está disponible en el sistema.
- Logs con Colores: Funciones como
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,wget,htop,btop,fastfetch,zoxide,stow,gnome-keyring,openssh,rsync,usbutils,tlp. - Desarrollo:
python,python-pip,nodejs,npm,uv,arduino-cli. También instalanvm(Node Version Manager) yHomebrewpara una gestión de paquetes más flexible. - Multimedia: VLC (y sus codecs), Audacity, Inkscape,
ffmpeg,gstreamer,gst-plugins-*,yt-dlppara descargar vídeos, herramientas de audio ALSA y pulseaudio. - Red: FileZilla, Telegram,
scrcpy,speedtest-cli. - AUR: Visual Studio Code, Cursor, Keyd, Fragments, Logiops, TeamViewer, Antigravity, OpenCode, Intel Compute Runtime.
- 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,lib32-mesa,lib32-vulkan-intel, y los drivers para la aceleración de vídeo por hardware (VA-API), OpenCL e Intel Compute Runtime.
- Base del Sistema:
- Configuraciones Adicionales:
- Habilita y configura servicios del sistema como
gnome-keyring-daemon(para gestión de contraseñas),keydylogiops(para teclados y ratones avanzados),teamviewerytlp(para la gestión avanzada de energía y optimización de la batería). - Nota: La gestión de claves SSH ahora se realiza mediante el módulo
ssh-keyring.shusandogcr-ssh-agent(para GNOME 46+), no desde este módulo.
- Habilita y configura servicios del sistema como
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,zsh-syntax-highlighting,zsh-autosuggestionsy dependencias (unrar,p7zip,lsof). Nota:git,zoxide,fastfetchyyt-dlpse instalan en el móduloapps.shpara evitar duplicidades. - 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) yzsh-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
~/.zshrcdel usuario por una versión pre-configurada que integra todas estas herramientas y añade alias y funciones útiles, incluyendo una funciónzsh_helpque muestra una lista de todos los comandos personalizados. Si no se puede crear backup, continúa de todas formas. - Shell por Defecto: Cambia el shell de inicio de sesión del usuario a Zsh.
- Integración con .bashrc: Configura
.bashrcpara ejecutarexec zshautomáticamente al iniciar una terminal interactiva.
- Instalación: Instala
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
dockerydocker-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 desudo. - Portainer (Opcional): Pregunta al usuario si desea instalar Portainer, una interfaz gráfica web para gestionar contenedores, imágenes y volúmenes de Docker.
- Instalación: Instala los paquetes
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).
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), ykitty(emulador de terminal). - Configuración: Despliega una estructura de archivos de configuración predefinida para todos estos componentes.
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
gsettingspara cambiar el tema de iconos activo en el entorno de escritorio.
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.
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
cupsyavahi(para la detección de impresoras en red). - Permisos: Añade al usuario al grupo
lppara permitirle administrar impresoras.
Mejora la gestión de claves SSH.
- Función Principal: Sincronizar las claves SSH del usuario con el agente gcr-ssh-agent.
- Funcionamiento:
- Habilita e inicia el servicio
gcr-ssh-agent.socket(el componente SSH que ahora está engcren lugar degnome-keyring). - Configura la variable de entorno
SSH_AUTH_SOCKpara apuntar a$XDG_RUNTIME_DIR/gcr/ssh. - Busca todas las claves SSH privadas en el directorio
~/.ssh/. - Utiliza
ssh-addpara 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 usagcr-ssh-agenten lugar del componente SSH degnome-keyring.
- Habilita e inicia el servicio
Configuración personalizada de Neovim disponible en mg_dotfiles.
- Ubicación: La configuración se encuentra en
mg_dotfiles/nvim/y se ha copiado a este repositorio. - Contenido: Incluye configuración con LazyVim, plugins personalizados, colores y atajos de teclado.
- Instalación Manual: Si deseas vincular la configuración desde mg_dotfiles/:
ln -s $(pwd)/mg_dotfiles/nvim ~/.config/nvim
- Nota: Neovim debe instalarse previamente (ej:
paru -S neovim-gitopacman -S neovim).
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.
- Instalación: Instala el paquete
- Dotfiles: Este script es opinionated. Utiliza las configuraciones incluidas en el directorio
mg_dotfiles/de este repositorio. - Configuración Local: Usa
.zshrc.localpara agregar configuraciones personales y API keys. Se incluye.zshrc.local.examplecomo plantilla sin secretos. - Neovim: La configuración personalizada de Neovim está disponible en
mg_dotfiles/nvim/. No se instala automáticamente, pero puede vincularse manualmente conln -s $(pwd)/mg_dotfiles/nvim ~/.config/nvim. - Fuentes: Es imprescindible usar una Nerd Font (ej:
CaskaydiaMono NFottf-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.
- Logs: Cada ejecución genera un log en
logs/omarchy-setup-YYYY-MM-DD_HH-MM-SS.log - SSH Keyring: A partir de GNOME 46+, la funcionalidad SSH fue movida a
gcr, por lo que la gestión de claves SSH ahora usagcr-ssh-agenten lugar del componente SSH degnome-keyring.
Para añadir una funcionalidad:
- Crea un script en
modules/. - Regístralo en el array
MODULESdeomarchy-setup.sh. - Actualiza la documentación técnica y
installed_software.mdcon los nuevos componentes.
Marco - GitHub