This repository contains the scripts and configuration files I use to bootstrap a Windows workstation.
The setup installs a curated set of desktop tools, configures the Windows shell experience (PowerShell/WT),
and keeps personal application settings versioned inside this repo.
| Path | Description |
|---|---|
install/windows.ps1 |
Entry point that wires all modules together and orchestrates package installs + symlink creation. |
lib/windows/*.psm1 |
Internal helper modules (logging, filesystem helpers, shared constants, confirmation prompts, etc.). |
packages/packages.json |
WinGet import manifest for desktop software (Docker, VS Code, JetBrains Toolbox, etc.). |
packages/winget.sync-packages.ps1 |
Script invoked by the installer to import the WinGet manifest. |
links/*.ps1 |
One script per app that installs modules/fonts (PowerShell) or creates symlinks beneath %USERPROFILE%. |
config/** |
The actual dotfiles that get linked (PowerShell profile, Git config, WSL, Windows Terminal, GoXLR presets). |
- Windows 11 with administrative access.
- PowerShell 7+ (for modules like
Install-Module,oh-my-posh,wingetCLI, etc.). - WinGet installed (included with modern Windows builds).
git clone https://github.com/SocketSomeone/dotfiles.git $env:USERPROFILE\dotfiles
cd $env:USERPROFILE\dotfiles
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
pwsh -File .\install\windows.ps1 # add -Debug to trace every stepWhat the installer does:
- Imports helper modules from
lib/windows. - Runs every script under
packages/(currently just the WinGet import) to ensure required software is present. - Executes all scripts under
links/to create symlinks for configuration files/directories and to install shell modules/fonts.
- Package list โ Add/remove WinGet identifiers in
packages/packages.json, then rerun the installer or invokepackages/winget.sync-packages.ps1manually to apply the changes. - PowerShell profile โ Edit
config/pwsh/Microsoft.PowerShell_profile.ps1to tweak modules,PSReadLinebindings, or theoh-my-poshtheme name stored in$THEME. - Other apps โ Adjust files under
config/git,config/wt,config/wsl, or create newlinks/*.ps1scripts if you want to manage more applications.
- The symlink helper prompts before overwriting existing files; rerun a specific script from
links/if you need to relink without running the full installer. - Use the
-Debugswitch when launchinginstall/windows.ps1to see every command/path the bootstrapper touches. - Because the repo stores plain text configuration, it's easy to track changes with Git across machines.
- Author - Alexey Filippov
- Twitter - @SocketSomeone