Local development environments have come a long way on Windows machines over the past decade.

We have the ease and use of Windows Subsystem for Linux (WSL). You can get your favourite Linux distribution up and running fast with no need for VirtualBox or any other specific tools. For some folks, that may be all you need!

With Windows Terminal slowly getting stronger (to the point where I don’t feel as vulnerable while away from a *nix system; finally tabs!), I can be more productive using Windows command line. My main issues with this in the past have been making a mess of my system environment variables, and forgetting where I’ve installed something. Chocolately and Boxstarter solve both of these issues for me.

Score.

Installation Prerequisites

  1. Chocolately is a Windows package manager. It’s similar to using MacPorts (which in turn is like BSD ports) or Homebrew (brew), if you are familiar with developing in macOS. Chocolately allows us to automate the entire Windows software lifecycle.
  2. Boxstarter allows you to write repeatable Windows installation scripts. This allows me to deploy scripts on beast machine work stations and temporary laptops with repeatable success.

Windows 10 Work Development Environment

I work across a wide variety of technology and my development environments reflect that. You can find the specific scripts that I use in this GitHub Gist . They must be run from a Boxstarter Shell.

This Gist contains the following for setting up a software development tools (Python, Go, Ruby, Node, PHP, C, etc), databases (MariaDB, PostgreSQL, MongoDB), apps and tools (Git, VS Code, Firefox, VirtualBox, 7-zip, PuTTY), light security environment (Wireshark, Burp Suite, nmap, HxD, etc), and more. All packages are from Chocolately.

Install From a Gist

Install-BoxstarterPackage -PackageName https://gist.githubusercontent.com/shriker/239778729a66bc33376d01e284ac99f7/raw/ed43e0d2140a028cb7a56f60a5af7e071136d4e0/work-environment.ps1 -DisableReboots

Raw contents of the Gist:

Disable-UAC
Disable-GameBarTips
Disable-BingSearch

# windows updates
Enable-MicrosoftUpdate
Install-WindowsUpdate -acceptEula

# defaults
Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrive -EnableShowFileExtensions -EnableShowFullPathInTitleBar

# environment
cinst vscode
cinst git --package-parameters="'/GitAndUnixToolsOnPath /WindowsTerminal'"
cinst firefox
cinst virtualbox
cinst 7zip
cinst putty
cinst sysinternals
cinst microsoft-windows-terminal

# frameworks
cinst dotnet4.6.2
cinst vcredist140

# languages
cinst python
cinst golang
cinst ruby
cinst tinycc
cinst nodejs-lts
cinst yarn
cinst php
cinst composer

# databases
cinst mariadb
cinst postgresql
cinst mongodb

# security
cinst yubikey-manager
cinst burp-suite-free-edition
cinst wireshark
cinst nmap
cinst hxd
cinst windbg

Enable-UAC

After I’ve set up my Windows box, the only remaining steps I need to do is generate a new ssh key and add it to Paegent (a PuTTY authentication agent), and then sync my VS Code settings .

Oh, and if you want to set it all up in a VirtualMachine, or remotely? Boxstarter can do that too.