Skip to content

About

dManager es un gestor interactivo de dotfiles y perfiles para Arch Linux, administrable mediante una interfaz TUI o automatizable por CLI.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Repository files navigation

dManager (Dotfiles Manager)

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.


Tabla de contenidos


Qué hace

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 carpeta system/ del repo. Las operaciones que tocan rutas del sistema se ejecutan con sudo.
  • 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 .sh independiente.
  • Estado de symlinks — reporta qué paquetes están aplicados, cuáles tienen symlinks rotos, conflictos o archivos sin aplicar.

Cómo funciona

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 system y las ocultas) son paquetes stow. Se aplican con stow --no-folding para evitar directorios colapsados.
  • La carpeta system/ espeja la raíz del sistema: system/etc/foo se enlaza en /etc/foo.
  • Los scripts en .scripts/ se ejecutan con bash (o runuser si la app corre con sudo).
  • Los perfiles se guardan en perfiles.json y 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.


Requisitos

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 -si o instalalo desde pacman si estas en CACHYOS).
  • SDK de .NET 10 — solo para compilar (sudo pacman -S dotnet-sdk).

Instalación

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 --recursive

Compilar e instalar:

dotnet publish -c Release
sudo ln -sf $(realpath ./bin/Release/net10.0/linux-x64/publish/dmanager) /usr/local/bin/dmanager

El binario publicado es self-contained (no necesita que tengas el runtime de .NET instalado en el sistema donde lo vas a correr).


Modo de uso

1. Interfaz interactiva (TUI)

Ejecutá el comando sin argumentos para abrir el menú principal:

dmanager

Desde 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.

2. Modo CLI (scriptable)

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 -h

Algunos 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-perfil

Ejecutá dmanager -h <comando> para ver la ayuda específica de cada comando.


Licencia

Este proyecto está bajo la licencia Mozilla Public License 2.0 (MPL-2.0).
Ver LICENSE para el texto completo.

About

dManager es un gestor interactivo de dotfiles y perfiles para Arch Linux, administrable mediante una interfaz TUI o automatizable por CLI.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages