Skip to content

freyazh/dotfiles-windows

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

84 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles-windows

Native Windows + PowerShell 7 dotfiles, managed by chezmoi. A self-contained, Windows-only companion to the cross-platform (macOS/Linux) dotfiles at daviddwlee84/dotfiles — the PowerShell layer is written natively rather than ported from the POSIX shell config.

Which repo do I install from?

Your machine Use
Native Windows (PowerShell) this repo (dotfiles-windows)
macOS / Linux / WSL daviddwlee84/dotfiles

Status: work in progress. See docs/ for the full handbook (bilingual EN / 繁體中文) once built.

Quick start

From a fresh Windows PowerShell (or pwsh) session:

irm https://raw.githubusercontent.com/daviddwlee84/dotfiles-windows/main/bootstrap.ps1 | iex

This installs scoop (CLI tools) + winget (GUI apps), PowerShell 7, chezmoi and uv, then applies the dotfiles.

What you get

  • Shell: PowerShell 7 with a modular $PROFILE (~/.config/powershell/profile.d/*.ps1).
  • Prompt: starship (shared config with the macOS/Linux dotfiles).
  • CLI tools (scoop): git, neovim, lazygit, zoxide, fzf, bat, eza, ripgrep, fd, gh, delta, jq, yazi, btop, mise, uv, node, bun.
  • AI agents: Claude Code, OpenCode, Codex, GitHub Copilot CLI, SpecStory, Antigravity.
  • Editors: VSCode, Cursor, Notepad++ (shared settings/keybindings).
  • Apps (winget): Windows Terminal, Alacritty, Raycast, PowerToys, Steam.
  • copilot-proxy tool series, rewritten as a native PowerShell module.

Package manager

scoop for CLIs, winget for GUI apps. Rationale (why not Chocolatey, why starship not oh-my-posh, why pwsh not cmd) lives in the docs.

Layout

Path What
.chezmoi.toml.tmpl Init prompts (role + feature toggles).
Documents/PowerShell/Microsoft.PowerShell_profile.ps1 $PROFILE loader.
dot_config/powershell/profile.d/ Modular shell fragments.
dot_config/powershell/modules/Copilot/ copilot-proxy PowerShell module.
dot_config/starship.toml Prompt config.
dot_ssh/ Create-only ~/.ssh/config skeleton (Include config.d/*) + config.d/ snippets.
.chezmoiscripts/ Package install + editor-overlay scripts.
bootstrap.ps1 One-line installer.
docs/, mkdocs.yml Bilingual documentation site.

SSH

dot_ssh/ ships a create-only OpenSSH skeleton, mirrored from the cross-platform dotfiles and adapted for Windows:

  • ~/.ssh/configInclude ~/.ssh/config.d/* plus conservative Host * keepalives. Create-only: an existing ~/.ssh/config is never overwritten (add the Include line by hand if so). chezmoi writes it owner-only so Windows OpenSSH won't reject it with "Bad owner or permissions".
  • ~/.ssh/config.d/00-defaults — commented-out global-defaults stub.
  • ~/.ssh/config.d/01_gitgithub.com over ssh.github.com:443 (survives port-22 filtering) + gitlab.com, with commented multi-account / SOCKS5-proxy examples.

Agent handling differs from macOS/Linux: use the Windows OpenSSH Authentication Agent service (Set-Service ssh-agent -StartupType Automatic; Start-Service ssh-agent; ssh-add). The client uses the //./pipe/openssh-ssh-agent named pipe by default — no SSH_AUTH_SOCK needed.

Manual dotfiles ops

First-time install (fresh machine — no chezmoi yet): run the Quick start one-liner. bootstrap.ps1 installs scoop, git, pwsh, chezmoi and uv, then runs chezmoi init --apply (asking the init prompts once). You only do this once per machine.

Day-to-day (chezmoi already installed): pull the latest and re-apply.

chezmoi update --init   # git pull + apply; --init re-asks any newly-added prompts (noop if none)
chezmoi diff            # preview pending changes without applying
chezmoi apply           # apply local source edits only (no pull)
just upgrade-scoop      # upgrade CLI tools
just upgrade-winget     # upgrade GUI apps

Inside a loaded PowerShell session there are shortcuts (see profile.d/20_aliases.ps1): cau = chezmoi update --init + reload $PROFILE, cas = chezmoi apply + reload. Prefer cau as the normal "sync my dotfiles" verb.

Roadmap & lessons learned

Forward-looking work — long-term ideas, deferred items, things needing evaluation — lives in TODO.md, prioritised P1 → P3 with effort estimates (S/M/L/XL). Items with accompanying research, design notes, or paused troubleshooting link to a corresponding backlog/<slug>.md doc.

Backward-looking knowledge — past traps and non-obvious debugging — lives in pitfalls/, titled by symptom so future-you can grep the error message and land on the root cause + workaround instead of re-debugging from scratch.

(end)

About

Native Windows + PowerShell 7 dotfiles, managed by chezmoi (scoop + winget, starship, copilot-proxy).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • PowerShell 36.0%
  • Shell 24.6%
  • Python 9.6%
  • JavaScript 9.5%
  • Lua 9.3%
  • Go Template 9.1%
  • Other 1.9%