Un gestor de dotfiles y perfiles para Arch Linux y sus derivados, desarrollado en C# / .NET 10. Combina una interfaz de terminal (TUI) interactiva con un modo CLI scriptable para administrar symlinks de tu home, archivos de sistema, scripts de instalación y perfiles reutilizables que automatizan la configuración completa de una máquina.
La interfaz de terminal está construida sobre TermFlow.Net.
dManager automatiza las tareas repetitivas que aparecen cuando se administran dotfiles en Arch Linux:
- Backups automáticos — antes de cada operación que toca archivos existentes, se hace un backup con timestamp en
~/.dotfiles-backup/. - Symlinks del home con GNU Stow — trata cada carpeta del repo como un "paquete stow" y lo enlaza en tu
$HOME, respetando la estructura original. Si hay archivos reales en el destino, los respalda antes de reemplazarlos. - Symlinks de sistema — administra archivos que viven fuera del home (típicamente
/etc,/boot, etc.) replicándolos como symlinks hacia una carpetasystem/del repo. Las operaciones que tocan rutas del sistema se ejecutan consudo. - Scripts ejecutables — guardá tus scripts custom en
.scripts/y ejecutalos desde la TUI o desde CLI. Útil para cosas como instalar dependencias, configurar servicios, etc. - Perfiles — combinaciones ordenadas de pasos (paquetes a instalar con
yay, dotfiles a aplicar, scripts a correr) que se aplican en secuencia. Sirven para clonar la configuración completa de una máquina en una sola operación. Los perfiles también se pueden exportar como un script.shindependiente. - Estado de symlinks — reporta qué paquetes están aplicados, cuáles tienen symlinks rotos, conflictos o archivos sin aplicar.
El repo de dotfiles (la ruta que configures) se organiza así:
<dotfiles-dir>/
├── nvim/.config/nvim/ # paquete stow → enlaza ~/.config/nvim/, etc.
├── home/.bashrc # paquete stow → enlaza ~/.bashrc, etc.
├── system/
│ └── etc/
│ └── ... # symlinks hacia /etc/...
├── .scripts/
│ └── *.sh # scripts ejecutables
└── perfiles.json # definición de perfiles
- Las carpetas de primer nivel (excepto
systemy las ocultas) son paquetes stow. Se aplican constow --no-foldingpara evitar directorios colapsados. - La carpeta
system/espeja la raíz del sistema:system/etc/foose enlaza en/etc/foo. - Los scripts en
.scripts/se ejecutan conbash(orunusersi la app corre con sudo). - Los perfiles se guardan en
perfiles.jsony se editan desde la TUI o CLI.
La configuración de dManager (la ruta del repo) se guarda en ~/.config/dotfiles-manager/config.json. Si cambiás esa ruta (manualmente o con dmanager sd <ruta>), la app la recarga en caliente.
Asegurate de tener instalado en tu sistema:
- Bash — para ejecutar scripts y comandos internos.
- GNU Stow — para gestionar los symlinks del home (
sudo pacman -S stow). - Yay — para instalar paquetes AUR en los perfiles (
sudo pacman -S --needed git base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -sio instalalo desde pacman si estas en CACHYOS). - SDK de .NET 10 — solo para compilar (
sudo pacman -S dotnet-sdk).
El repositorio incluye TermFlow.Net como submódulo, tienés que clonar con --recursive (o inicializar el submódulo después de clonar) para que se descargue también:
# Opción 1: clonar con submódulo
git clone --recursive https://github.com/1R1an1/DotfilesManager.git
cd DotfilesManager
# Opción 2: si ya clonaste sin --recursive, inicializá el submódulo
git clone https://github.com/1R1an1/DotfilesManager.git
cd DotfilesManager
git submodule update --init --recursiveCompilar e instalar:
dotnet publish -c Release
sudo ln -sf $(realpath ./bin/Release/net10.0/linux-x64/publish/dmanager) /usr/local/bin/dmanagerEl binario publicado es self-contained (no necesita que tengas el runtime de .NET instalado en el sistema donde lo vas a correr).
Ejecutá el comando sin argumentos para abrir el menú principal:
dmanagerDesde ahí accedes a:
- Symlinks — aplicar dotfiles, ver estado, borrar y agregar archivos al repo.
- Ejecutar script — elegir y correr un script de
.scripts/. - Perfiles — crear, editar, aplicar y exportar perfiles.
La navegación en la TUI usa flechas o teclas vim (j/k/g/G), Space para marcar, Enter para confirmar y q/Esc para cancelar.
Para usar dmanager desde scripts o directamente desde la consola, ejecutá los subcomandos directamente. Para ver la lista completa de comandos y opciones ejecuta:
dmanager -hAlgunos ejemplos:
# Aplicar paquetes del home
dmanager apply --home nvim home
# Aplicar symlinks de sistema
dmanager apply --system /etc/foo /boot/bar
# Ver estado de symlinks
dmanager status
# Ejecutar un script
dmanager script setup.sh
# Crear y aplicar un perfil
dmanager profile --create mi-perfil --packages nvim,git --dotfiles home
dmanager profile --apply mi-perfilEjecutá dmanager -h <comando> para ver la ayuda específica de cada comando.
Este proyecto está bajo la licencia Mozilla Public License 2.0 (MPL-2.0).
Ver LICENSE para el texto completo.