A comprehensive, automated development environment setup for Windows developers. This repository provides a complete dotfiles setup with modern tools, configurations, and productivity enhancements.
- Package Management: Scoop + Winget for comprehensive package management
- Terminal: WezTerm with custom configuration and keybindings
- Shell: Enhanced PowerShell with aliases, functions, and integrations
- Prompt: Starship with custom, informative prompt
- Editor: Neovim with automated config cloning
- Version Control: Git with enhanced aliases and delta diff viewer
- Languages: Python, Node.js (via fnm), Go, Rust, Zig
- File Management: eza (ls replacement), fd (find replacement), yazi (file manager)
- Search: ripgrep (rg) for fast text search
- Git Tools: lazygit for enhanced git workflow
- Navigation: zoxide for smart directory navigation
- Terminal Multiplexing: Built-in WezTerm pane management
- Smart Aliases: Comprehensive aliases for common operations
- Project Navigation: Quick project discovery and navigation
- Environment Management: Template-based environment variables
- Backup Strategy: Automatic backup of existing configurations
- Error Handling: Robust error handling throughout setup process
- Windows 10/11
- PowerShell 5.1+ (PowerShell 7+ recommended)
- Administrator access (for some package installations)
git clone https://github.com/lubasinkal/dev-setup.git
cd dev-setup.\init.ps1Close and reopen your terminal to load the new configuration.
dev-setup/
βββ init.ps1 # Main setup script
βββ README.md # This file
βββ configs/
βββ .gitconfig # Git configuration
βββ .wezterm.lua # WezTerm configuration
βββ starship.toml # Starship prompt config
βββ .bashrc # Bash configuration
βββ alacritty.toml # Alacritty configuration
βββ Microsoft.PowerShell_profile.ps1 # PowerShell profile
- Core: Git, GitHub CLI, Make, Unzip, 7zip
- Editors: Neovim, Zed
- Languages: Python, Node.js, Go, Rust, Zig
- Package Managers: Scoop, fnm (Node.js), pnpm, uv (Python)
- Terminal: WezTerm, Alacritty, PowerShell, Nushell
- File Utils: eza, fd, yazi, bat, delta, imagemagick
- Search: ripgrep, fzf
- Git: lazygit
- Navigation: zoxide
- System: fastfetch, neofetch
- Other: aria2, ani-cli
- Directories: Structured dev directories (personal, work, open-source, etc.)
- Configuration: All tool configurations automatically applied
- Aliases: Comprehensive command aliases
- Environment: Template-based environment setup
- Smart aliases for common operations
- Project navigation functions
- Tool integrations (starship, fnm, zoxide)
- Custom functions for productivity
- Custom keybindings for pane management
- Optimized color scheme and appearance
- Multiple shell options (PowerShell, Bash, Nushell)
- Productivity-focused layout
- Modern terminal emulator
- Custom color scheme and appearance
- Optimized for development workflow
- Enhanced aliases for common git operations
- Delta diff viewer for better diffs
- Smart merge and rebase settings
- GPG signing support (optional)
- Custom, informative prompt
- Git status and branch information
- Python virtual environment display
- Clean, minimal design
# Navigation
dev personal # Go to personal dev directory
proj myproject # Find and jump to project
y # Launch yazi file manager
# Git operations
gst # Git status
gcm "commit message" # Git commit with message
gp # Git push
gl # Git pull with rebase
# File operations
ll # Detailed file listing
find filename # Find files
grep pattern # Search in files
# System info
sysinfo # Show system information
fastfetch # Display system stats# Start new project
dev personal
mkcd new-project
git init
code .
# Node.js development
fnm install 20
fnm use 20
pnpm install
pnpm dev
# Python development
uv venv
uv pip install -r requirements.txt
uv run python main.pyEdit init.ps1 and add packages to the appropriate function:
# For Scoop packages
scoop install new-package
# For Winget packages
"NewPackage.NewPackage"Add to configs/Microsoft.PowerShell_profile.ps1:
Set-Alias -Name myalias -Value { your-command }# Update Scoop packages
scoop update *
# Update Winget packages
winget upgrade --allThe setup automatically backs up existing configurations. Manual backup:
# Backup current configs
Copy-Item $PROFILE "$PROFILE.bak"
Copy-Item ~/.gitconfig ~/.gitconfig.bakTo reset to default configurations:
# Remove current configs
Remove-Item $PROFILE
Remove-Item ~/.gitconfig
Remove-Item ~/.wezterm.lua
# Re-run setup
.\init.ps1Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser# Install Scoop manually
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod get.scoop.sh | Invoke-Expression# Set your git identity
git config --global user.name "Your Name"
git config --global user.email "your.email@ezample.com"Restart your terminal or run:
. $PROFILE- Review individual config files in
configs/ - Check package documentation for specific tools
- Scoop for Windows package management
- Starship for the awesome prompt
- WezTerm for the terminal emulator
- Neovim for the editor
- The Windows development community for inspiration and tools
If you encounter issues or have questions:
- Check the troubleshooting section above
- Review individual config files in
configs/ - Open an issue on GitHub with detailed information
- Include your Windows version and PowerShell version in bug reports
Happy Coding! π