Configuración personal de Windows 11 con PowerShell + oh-my-posh + Windows Terminal + VS Code + WSL Ubuntu. Pensado para desarrollo profesional, productividad y replicabilidad entre máquinas — clona este repo en otra PC y en pocos minutos tienes exactamente el mismo setup.
| Componente | Para qué sirve |
|---|---|
PowerShell 7+ (pwsh) |
Shell moderna |
Windows PowerShell (powershell) |
Shell legacy (también queda configurada) |
| WSL Ubuntu / bash | Subsistema Linux con el mismo prompt |
| oh-my-posh | Prompt personalizable con temas, multiplataforma |
| Terminal-Icons | Iconos por tipo de archivo en ls / dir |
| Windows Terminal | Emulador de terminal |
| VS Code | Editor con settings, keybindings y lista de extensiones |
| Hack Nerd Font | Fuente con iconos para oh-my-posh |
Símbolo del sistema (CMD) queda fuera intencionalmente — no soporta prompts modernos nativamente y requeriría instalar Clink para hacerlo funcionar, lo cual no aporta valor sobre PowerShell 7.
¿Tu PC ya tiene PowerShell 7, Windows Terminal, VS Code, oh-my-posh y los demás componentes funcionando, y solo quieres aplicar mis configs encima de las tuyas?
Salta los Pre-requisitos y arranca directo en el Paso 1. El install.ps1 es seguro para este caso porque:
- Detecta cada archivo de config existente (PowerShell profile, settings de Windows Terminal, settings de VS Code, etc.)
- Le hace backup automático con sufijo
.pre-dotfiles.bakantes de tocarlo - Crea un symlink hacia el archivo del repo
Si después algo no te gusta, revertir es renombrar el .pre-dotfiles.bak de vuelta a su nombre original. No reinstala ni toca tus herramientas, solo cambia los archivos de configuración.
Antes de aplicar los dotfiles necesitas tener el stack instalado. Si ya lo tienes (caso de migración arriba), salta esta sección.
Necesario para crear symlinks sin Administrador.
Settings → Privacy & security → For developers → activar Developer Mode
Solo necesario si vas a usar Windows PowerShell (legacy). Sin esto, el profile no carga. Desde Windows PowerShell (no PowerShell 7):
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserConfirma con S cuando pregunte. RemoteSigned permite scripts locales y bloquea los descargados sin firmar.
winget install Microsoft.PowerShell
winget install Microsoft.WindowsTerminal
winget install Microsoft.VisualStudioCode
winget install JanDeDobbeleer.OhMyPosh -s winget
winget install Git.GitDescarga desde nerdfonts.com → opción "Hack" → extrae el zip → click derecho en cada .ttf → Install.
Importante: PowerShell 7 y Windows PowerShell legacy tienen carpetas de módulos separadas. Si vas a usar ambos shells, instala Terminal-Icons en cada uno por separado.
Desde PowerShell 7 (pwsh):
Install-Module -Name Terminal-Icons -Repository PSGallery -Scope CurrentUserDesde Windows PowerShell (powershell, opcional si solo usas PS7):
Install-Module -Name Terminal-Icons -Repository PSGallery -Scope CurrentUserCuando pregunte si confías en PSGallery → S (Sí).
git clone https://github.com/M1gu3l4ngel/dotfiles-windows.git $env:USERPROFILE\dotfiles
cd $env:USERPROFILE\dotfilesEl repo en GitHub se llama
dotfiles-windows(para distinguir del repo de Parrot), pero localmente lo clonamos comodotfilespara mantener la convención de carpetas corta.
.\install.ps1El script:
- Crea backup de tus configs actuales (
<archivo>.pre-dotfiles.bak) - Crea symlinks desde las ubicaciones estándar hacia los archivos del repo
- Cubre PowerShell 7, Windows PowerShell legacy, oh-my-posh theme, Windows Terminal y VS Code
- Es idempotente: si lo corres dos veces, no rompe nada
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
git config --global init.defaultBranch main
git config --global http.postBuffer 524288000
.gitconfigno se versiona en este repo porque acumula entradassafe.directorypor máquina (rutas locales). Se configura una vez con estos comandos y git se encarga del resto.
Get-Content .\vscode\extensions.txt | ForEach-Object { code --install-extension $_ }Esto instala las extensiones del listado guardado.
Si usas WSL Ubuntu, puedes darle el mismo prompt que tu PowerShell, leyendo el archivo de tema directamente desde /mnt/c/ (cero duplicación — si editas el tema en Windows, también cambia en WSL).
sudo apt update && sudo apt install -y unzipcurl -s https://ohmyposh.dev/install.sh | bash -sEdita ~/.bashrc con nano ~/.bashrc y agrega al final:
# oh-my-posh — mismo tema que Windows (via dotfiles en /mnt/c)
export PATH="$HOME/.local/bin:$PATH"
eval "$(oh-my-posh init bash --config /mnt/c/Users/<TU_USUARIO>/dotfiles/oh-my-posh/capr4n.omp.json)"Reemplaza <TU_USUARIO> por tu nombre de usuario de Windows (en mi caso, migue).
source ~/.bashrcDeberías ver el prompt idéntico al de PowerShell.
dotfiles/
├── powershell\ → ~\Documents\PowerShell\ (PS 7)
│ → ~\Documents\WindowsPowerShell\ (PS legacy)
├── oh-my-posh\ → ~\AppData\Local\Programs\oh-my-posh\themes\
├── windows-terminal\ → ~\AppData\Local\Packages\Microsoft.WindowsTerminal_*\LocalState\
├── vscode\ → ~\AppData\Roaming\Code\User\
├── install.ps1
├── README.md
├── LICENSE
├── CLAUDE.md
└── .gitignore
El mismo Microsoft.PowerShell_profile.ps1 se usa para PowerShell 7 y Windows PowerShell legacy (ambos symlinks apuntan al mismo archivo del repo).
Edita los archivos en ~\dotfiles\ — los symlinks hacen que los cambios se apliquen al reabrir la app correspondiente. Para el PowerShell profile basta con . $PROFILE en una sesión activa.
Cuando instales una nueva extensión y quieras versionarla:
code --list-extensions | Out-File -FilePath .\vscode\extensions.txt -Encoding utf8Inspirado en oh-my-posh de Jan De Dobbeleer, en el módulo Terminal-Icons, y en mi setup paralelo de Parrot Security en dotfiles-parrot.
Adaptado por M1gu3l4ng3l para flujo profesional en Windows.
MIT — usa, copia, modifica libremente.
Hecho con 🪟 por M1gu3l4ng3l
