• Stars
    star
    1,359
  • Rank 34,580 (Top 0.7 %)
  • Language
    PowerShell
  • License
    MIT License
  • Created about 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔭 Turning Windows into an environment ready for modern development

Setup Windows 11 for Modern/Hipster Development

A fresh Windows isn't entirely ready for modern development, but all the tools you need are available. A good terminal, popular bash tools, Git, a decent package manager - when properly setup, modern development on Windows can be a lot of fun. In particular, this document outlines how to configure your Windows in such a way that it can easily handle most development tasks usually run on a Mac OS X or a Linux distro.

A Word about Ubuntu Linux on Windows

☝️ While Bash on Windows isn't perfect yet, it's an amazing tool that can make development a lot easier - especially when you're dealing with Bash scripts, Ruby, or Ubuntu binaries. It's an amazing tool, but keep in mind that Git, Node, or Go are already pretty performant on Windows itself. However, they run just fine in Bash, so if you feel like moving most of your development over, go for it. Here's the how-to:

  • Ensure that you're running Windows 10 Anniversary Update (build 14311 and up)
  • Enable Developer Mode (Settings - Update & security > For developers)
  • Search for “Windows Features” and choose “Turn Windows features on or off” and enable Windows Subsystem for Linux.
  • To get Bash installed, open Command Prompt and type “bash”

Automate it!

Below, you can see the all the things I need to actually go and work on stuff. An opinionated version of the list below can be installed automatically thanks to the magic of Boxstarter. Check out the script to see what it runs. It's a trimmed down version of all the tools below, leaving out duplicate tools. As an example, it installs VS Code (and not Atom or Sublime) and Git (but not Subversion or Mercurial). Simply start PowerShell as Administrator and run:

START http://boxstarter.org/package/nr/url?https://raw.githubusercontent.com/felixrieseberg/windows-development-environment/master/boxstarter

The Goods

Package Management: Chocolatey

Chocolatey is a powerful package manager for Windows, working sort of like apt-get or homebrew. Let's get that first. Fire up CMD.exe as Administrator and run:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Once done, you can install packages by running cinst (short for choco install). Most packages below will be installed with Chocolatey.

Terminal: Windows Terminal

These days, I just use Windows Terminal with oh-my-posh.

I used to use CMDer and Hyper, both powerful tools to do more command-line things with. They were great. I've personally moved on but you might enjoy the old-timers:

cinst microsoft-windows-terminal
cinst oh-my-posh

Even if you don't want to use either, you should enable your PowerShell to execute scripts. You're a developer - the terminal is your friend.

Set-ExecutionPolicy Unrestricted -Scope CurrentUser

If you want to go even further, check out the attached PowerShell Profile in this repository. It's my personal one and might not be perfect for you, but it makes my personal life a lot easier. You can edit your PowerShell profile with your favorite editor by calling $PROFILE, so if you're using Visual Studio Code, call code $PROFILE (or vim $PROFILE - you get the idea).

PowerShell Profile

Now that you have a good terminal, you might wonder how you can beef it up. This isn't part of the automated setup, but I'm quite happy with my profile. I've changed my PowerShell in the following ways:

  • Add helper functions (uptime, reload-profile, find-file, unzip, and print-path)
  • Add equivalents for my favorite Unix commands (df, sed, sed-recursive, grep, grepv, which, export, pkill, pgrep, touch, sudo, pstree)
  • Add Git aliases (gc for git checkout, gp for git pull)
  • Set the default output to utf8
  • Increase the linme history to 10000

To edit your PowerShell profile, run notepad.exe $PROFILE (or use an editor of your choice). Then, replce it with this profile.

Node and npm

A bunch of tools are powered by Node and installed via npm. This applies to you even if you don't care about Node development. If you want to install tools for React, Azure, TypeScript, or Cordova, you'll need this.

cinst nodejs.install

Version Control: Git

Obviously. If you want Git to be able to save credentials (so you don't have to enter SSH keys / passwords every single time you do anything), use the git.install package, which also installs the Git Credential Manager for Windows. I add parameters I care about.

cinst git.install /NoShellIntegration /WindowsTerminalProfile /Symlinks /DefaultBranchName:main /Editor:VisualStudioCodeInsiders
📝 Bonus: Mercurial, Subversion

If you're using Mercurial or Subversion (you poor, poor thing), install with:

cinst subversion
cinst mercurial

Code Editors: Atom, Sublime, VS Code

I won't join the war debating which editor is the best, but if you're looking for an editor and not a full IDE, chances are that you'll end up using one of those three.

cinst visualstudiocode
cinst SublimeText3
cinst sublimetext3-contextmenu
cinst SublimeText3.PackageControl
cinst SublimeText3.PowershellAlias
Visual Studio 2017

If you already own Visual Studio, you should obviously install the version you bought with your precious money. If you don't, do know that Visual Studio Community Edition is free (for most people).

If you have development needs that require an older version, Visual Studio 2015 Community Edition can be installed with this command:

cinst visualstudio2022community

Ruby

Even if you don't care about Ruby at all, bear in mind that it's preinstalled on OS X (and easy to install on Unix), so many dev tools might be trying to leverage it. For example, GitHub pages are compiled using Jekyll - if you want to get in on that, install Ruby.

cinst ruby
cinst ruby.devkit

Rust

Rust development on Windows is fantastic. I applaud the whole community for their cross-platform efforts. To get started, install rustup, the official installer for Rust. The easiest way to aquire it is to download it directly from the homepage.

rustup allows you to install so-called "Rust toolchains". I personally use the nightly one (because that's how I roll; but also, because many libraries require it):

rustup install nightly-msvc
rustup default nightly-msvc

From this point on forward, you can install additional Rust tools to make development easier with cargo.

Go

Sure, why not.

cinst golang

Python

Python is a complex world with a bunch of flavors, but Python 3 and pip should have you prepared for most things.

cinst python
cinst pip

Some older Node.js packages still require Python 2.7. Don't use this version unless you know you need it:

cinst python2

DevOps

This stuff is really only relevant if you're interested in DevOps - but if you are, you should probably install the stuff below. It's not likely that you need any of the things below unless you're directly working with it, because none of those things are expected to be installed on a Unix machine.

Docker, VirtualBox, Vagrant

If you want to run Docker machines and images, you might not need VirtualBox. In fact, installing VirtualBox on your system isn't always the best idea, given that it messes with a few system components.

Docker released a version for OS X and Windows that no longer requires VirtualBox to be installed - and instead uses the default Hypervisor that comes with the operating system (on Windows, that's Hyper-V). You can read more about it over in Docker's documentation.

cinst docker-desktop

SSH

If you installed CMDer or Gow as indicated above, you're already set - simply run ssh from CMD, CMDer, or PowerShell. If you haven't and you're running at least the Windows 10 Fall Creators Update, know that OpenSSH is now an official Windows feature. Install it from PowerShell with the following commands:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

# The above command should return something that looks like this:

# Name  : OpenSSH.Client~~~~0.0.1.0
# State : NotPresent
# 
# Name  : OpenSSH.Server~~~~0.0.1.0
# State : NotPresent

# Then, knowing the version numbers:

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Alternatively (and for older versions of Windows), install the official Microsoft port of OpenSSH directly:

cinst win32-openssh

Azure Cli

Super duper useful if you're working with Azure at all.

cinst azure-cli

AWS Cli

Super duper useful if you're working with Amazon Web Services at all.

cinst awscli
cinst awstools.powershell

Basic Tools

You'll recognize many of these names. Nothing here is crazy unique, it's just stuff you probably want installed to have a well-running machine.

cinst vlc
cinst GoogleChrome
cinst 7zip.install
cinst sysinternals
cinst paint.net
cinst spotify

If you're not running Windows 10, also install:

cinst DotNet3.5 -- not needed on windows 8
cinst DotNet4.0 -- not needed on windows 8
cinst DotNet4.5 -- not needed on windows 10
cinst PowerShell -- not needed on windows 10

Remove unwanted packages

Windows comes with a bunch of Store apps you might not want.

Get-AppxPackage Facebook.Facebook | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage TuneIn.TuneInRadio | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage Microsoft.MinecraftUWP | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage Microsoft.MicrosoftSolitaireCollection | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage KeeperSecurityInc.Keeper | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage 2FE3CB00.PicsArt-PhotoStudio | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage 9E2F88E3.Twitter | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name *Twitter | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name *MarchofEmpires | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name king.com.* | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.3DBuilder | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name *Bing* | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.Office.Word | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.Office.PowerPoint | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.Office.Excel | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.MicrosoftOfficeHub | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name DellInc.PartnerPromo | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.Office.OneNote | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.MicrosoftSolitaireCollection | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.SkypeApp | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.YourPhone | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name *XBox* | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.MixedReality.Portal | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.Microsoft3DViewer | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name SpotifyAB.SpotifyMusic | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage -AllUser -Name Microsoft.MSPaint | Remove-AppxPackage -ErrorAction SilentlyContinue # Paint3D

More Repositories

1

windows95

💩🚀 Windows 95 in Electron. Runs on macOS, Linux, and Windows.
TypeScript
22,225
star
2

macintosh.js

🖥 A virtual Apple Macintosh with System 8, running in Electron. I'm sorry.
JavaScript
8,280
star
3

windows-build-tools

📦 Install C++ Build Tools for Windows using npm
TypeScript
3,398
star
4

npm-windows-upgrade

🚀 Upgrade npm on Windows
JavaScript
2,539
star
5

React-Dropzone-Component

📷 ReactJS Dropzone for File Uploads (using Dropzone.js)
JavaScript
1,001
star
6

React-Spreadsheet-Component

📋 Spreadsheet Component for ReactJS
JavaScript
763
star
7

electron-windows-notifications

⚡ Send native Windows WinRT notifications from Electron
JavaScript
262
star
8

slack-archive

Generate static HTML archives of Slack workspaces
TypeScript
239
star
9

project-oxford

🔭 Project Oxford for Node
JavaScript
177
star
10

electron-code-editor

⚡ A tiny code editor based on Electron, in ~100 lines of code
JavaScript
159
star
11

electron-notification-state

🔍 Should you display a notification? Let's find out!
TypeScript
149
star
12

Ghost-Azure

👻 Install Ghost on Azure with a simple click
JavaScript
129
star
13

peer-review-bot

A little bot checking GitHub pull requests for peer reviews
JavaScript
102
star
14

vsc-ember-cli

⚡ Turn Visual Studio Code into an Ember Cli IDE
TypeScript
92
star
15

razer-chroma

🔥 Control your Razer Keyboard, right from Node
C++
90
star
16

electron-uwp-background

⚡ Sample explaining how to use UWP background tasks with Electron apps
C#
82
star
17

Node-Mayhem

💣 Multiplayer HTML5 shooter with Node.js, Socket.io and Melon.js
JavaScript
69
star
18

Ghost-Updater-Azure

👻 Update Ghost on Azure Websites / Azure Web Apps with a few clicks
JavaScript
62
star
19

electron-windows-interactive-notifications

⚡ Respond to interactive notifications on Windows, from Electron
C++
57
star
20

responsive-images-generator

Generate responsive images from Node
JavaScript
55
star
21

dennard

🔬 Tiny Node cli tool to see a local app's memory footprint, cross-platform
JavaScript
54
star
22

macos-notification-state

🔍 This native module checks if the user is active, if the screen is locked, or if "do not disturb" is enabled.
Objective-C++
53
star
23

travis-jekyll-git

Deploy Jekyll pages using Git and Travis CI
Shell
44
star
24

Reveal-PikeStreet

"Pike Street" Theme for Reveal.js, intended for Microsoft's DX's Open Source Engineers
JavaScript
44
star
25

monaco-loader

📦 Load the Monaco editor with a module loader (require, import, etc)
JavaScript
36
star
26

introducing-electron-editor

Code used in the book "Introducing Electron"
JavaScript
36
star
27

JARVIS

Node.js Personal Assistant Prototype
JavaScript
30
star
28

windows-quiet-hours

Checks if Windows 10 quiet hours are active
JavaScript
26
star
29

parse-server-azure

Adapters, tools, and documentation to use Parse-Server with Microsoft Azure
JavaScript
23
star
30

onedrive-link

Generate direct download links for OneDrive
JavaScript
23
star
31

vsc-travis-ci-status

:shipit: Check the status of your Travis CI project from Visual Studio Code
TypeScript
23
star
32

parse-docker

🚤 Run the Open Source Parse Server in Docker
JavaScript
22
star
33

electron-windows-sample

⚡ A minimal Electron sample application showing how to make an Electron app look native on Windows
JavaScript
20
star
34

ember-cli-azure-deploy

🔧 Build Ember Cli Apps on Azure Websites
Shell
19
star
35

electron-comrade

🔧 Run Electron apps with different versions or builds of Electron
TypeScript
18
star
36

parse-server-azure-storage

Use Azure Blob Storage with Parse Server
JavaScript
16
star
37

windows-shortcuts-ps

Node.js: Read Windows shortcuts without native dependencies (Windows 7 and up)
JavaScript
15
star
38

parse-docker-azure

🐳 Deploy the Open Source Parse Server on Azure, using Docker
15
star
39

iojs-azure

Running io.js on Azure Websites
Shell
15
star
40

emoji-autocomplete

📇 Node Library, turning words into emojis (turn rent into 🏠 💸)
JavaScript
14
star
41

windows-active-process

Check which process is currently in the foreground (focused / active)
C++
14
star
42

electron-winstore-auto-launch

🚀 Configure your Electron to start automatically when the user logs in
TypeScript
14
star
43

ember-cli-windows-addon

🚤 Ember Addon, Optimizing Ember Cli Performance on Windows
JavaScript
14
star
44

WinBridge

Native WinRT Controls & Features for Unity3D
C#
14
star
45

MicrosoftBand-Sample

A small sample showcasing interaction with the Microsoft Band
C#
13
star
46

sleuth

🕵️‍♂️ A Slack log viewer
TypeScript
12
star
47

windows-notification-state

SHQueryUserNotificationState, but as a native Node addon
JavaScript
11
star
48

SlackbotBender

A simple chatbot for slack.
JavaScript
10
star
49

medium-stats

You want Medium stats for traffic sources, this tool will give them to you
JavaScript
10
star
50

electron-smorgasbord

📦 A local update server for Squirrel & Electron, with a fancy GUI
TypeScript
10
star
51

lets-encrypt-iis

IIS Configurator for the wonderful Let's Encrypt project
Python
10
star
52

electron-face-detection-windows

Detect Faces in images, using Windows' very own face detection
JavaScript
9
star
53

chrome-cachetool

Chrome & Chromium's "cachetool"
TypeScript
9
star
54

Ghost-Desktop

Ghost for Desktops
JavaScript
7
star
55

azure-node4

Run Node.js 4.0 on Azure
Shell
7
star
56

modernweb

Code Demo for ModernWeb 2018 Keynote
HTML
6
star
57

javascript-course

Solutions to my little JavaScript course's exercises
JavaScript
6
star
58

electron-versions

Get Electron and Chromium versions for tags in a given repository
TypeScript
6
star
59

node-app-nap

😴 Disable macOS App Nap using Node
Objective-C++
5
star
60

electron-test-build

Take a built Electron app, replace the version of Electron
JavaScript
4
star
61

azure-npm3

Use npm3 on Azure Web Apps (formerly known as Azure Websites)
Shell
4
star
62

docker-jekyll

🐳 Jekyll with Extras for Docker
4
star
63

electron-forge-maker-nsis

An electron-forge maker for NSIS that supports electron-forge v6 and can be used as a replacement for electron-builder. Supports code-signing and basic updates with electron-updater.
TypeScript
4
star
64

electron-squirrel-s3

Update your Electron app directly from S3
TypeScript
4
star
65

UnityGettingStarted

Code for the TR Unity Presentation
C#
4
star
66

nodesummit-workshop

JavaScript
4
star
67

waffle

JavaScript
4
star
68

windows-process-info

In Node.js, quickly check if a process is running on win32. Fast, small, native.
JavaScript
4
star
69

shout-azure

🔈 Deploy Shout to Azure
3
star
70

AndroidAzureTweets

A sample Twitter-Style app using Azure Mobile Services for Android
Java
3
star
71

mountaingiantweb

JavaScript
3
star
72

find-npm-windows

📦 Find npm on Windows
JavaScript
3
star
73

dengue-research-portal

💻 A researcher's portal into dengue fever history and machine learning prediction
JavaScript
3
star
74

internet-explorer-version

Find the installed version of Internet Explorer, using Node.js
JavaScript
3
star
75

wrapped

A silly "wrapped" generator for my team
TypeScript
3
star
76

chrome-software-rendering-list

🙅 Chromium's list of blacklisted GPUs, consumable as a Node module
JavaScript
2
star
77

Unity-WinRT-WP8-PlayMovieNatively

Playing a movie on WinRT from within Unity
C#
2
star
78

atom-ghost

Write your blog posts in Atom, publish with Ghost
JavaScript
2
star
79

slack-wechat-bridge

TypeScript
2
star
80

SmoothRawMouse-UnityWindows8

Smoothened Mouse device delta readings in Unity for Windows 8 Store
C#
2
star
81

DJWindows98

A Mini Stage Show for DJ Windows 98
C#
2
star
82

node12-azure

Run Node 0.12 (Stable) on Azure Websites
Shell
2
star
83

adfreeclient

Client for AdFree, TechCrunch Disrupt Hackathon Project
CSS
2
star
84

LockLogger

A little debugging tool to log your session status
JavaScript
2
star
85

ember-visual-studio

A Visual Studio extension for Ember and Ember Cli
C#
1
star
86

ghost-arm

Ghost for ARM
JavaScript
1
star
87

sailsjs-azure

SailsJS, deployable to Azure
JavaScript
1
star
88

test-windows-linux-subsystem

⚡ We should probably test this Linux thing we just got
Shell
1
star
89

buy-my-vanagon

https://www.1979vanagon.com
HTML
1
star
90

SquirrelCLSIDForAppUserModelId

Quickly see what ToastActivatorCLSID Squirrel would generate for your AppUserModelId
C#
1
star
91

electron-drone

JavaScript
1
star
92

sanitize-xml-string

Sanitize a string for use with XML
TypeScript
1
star
93

npm-config-arguments

Parses npm_config env variables and assigns them to argv - useful for 'npm run' commands
JavaScript
1
star
94

kona

🏃 Kona A Slack Bot for Strava
TypeScript
1
star
95

tile

C++
1
star
96

electron-slack-tutorial

TypeScript
1
star
97

OxideFleet

Oxide, but for Car Management
JavaScript
1
star
98

runtime-logo

A logo for Slack's Desktop Runtime team
JavaScript
1
star
99

electron-react-playground

TypeScript
1
star
100

ember-service-worker-ghost-cache

JavaScript
1
star