Skip to content

Instantly share code, notes, and snippets.

@conkonig
Last active May 13, 2020 13:38
Show Gist options
  • Save conkonig/9afc3b4db263ef55035dcfce823cecc5 to your computer and use it in GitHub Desktop.
Save conkonig/9afc3b4db263ef55035dcfce823cecc5 to your computer and use it in GitHub Desktop.
Fresh Dev Environment Setup

1. Install / reset Windows 10

check clear all files on C drive (keeping other drives intact).

Run powershell as administrator

Install chrome with powershell

$Path = $env:TEMP; $Installer = "chrome_installer.exe"; Invoke-WebRequest "http://dl.google.com/chrome/install/375.126/chrome_installer.exe" -OutFile $Path\$Installer; Start-Process -FilePath $Path\$Installer -Args "/silent /install" -Verb RunAs -Wait; Remove-Item $Path\$Installer

Run chrome and login, do not sync passwords and settings (because why taint your shiny new setup !?)

2. Install WSL - Windows Linux subsystem

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

Get ubuntu from windows store, download and install a distro

Voila

WSL should now work, test by typing wsl in CMD

3. Remove Windows bloatware

It may be wise to hide certain ununsed packages (rather than delete).

This way they can easily be re-enabled when needed in the future. After all, they dont take up much disk space.

List all with package manager

Get-AppxPackage | Select PackageFullName

Hide package for all users

Get-AppxPackage -allusers PackageName | Remove-AppxPackage

My list of commonly ununsed packages for development:

You can copy paste these into an admin powershell terminal.

Get-AppxPackage -allusers -name "Microsoft.ZuneMusic" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.Music.Preview" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.BingTravel" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.BingHealthAndFitness" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.BingFoodAndDrink" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.People" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.BingFinance" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.3DBuilder" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.BingNews" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.BingSports" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.Getstarted" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.Office.OneNote" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.WindowsMaps" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.MicrosoftSolitaireCollection" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.MicrosoftOfficeHub" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.BingWeather" | Remove-AppxPackage
Get-AppxPackage -allusers -name "Microsoft.WindowsPhone" | Remove-AppxPackage
Get-AppxPackage -allusers *alarms* | Remove-AppxPackage
Get-AppxPackage -allusers *communicationsapps* | Remove-AppxPackage
Get-AppxPackage -allusers *feedback* | Remove-AppxPackage
Get-AppxPackage -allusers *officehub* | Remove-AppxPackage
Get-AppxPackage -allusers *getstarted* | Remove-AppxPackage
Get-AppxPackage -allusers *skypeapp* | Remove-AppxPackage
Get-AppxPackage -allusers *zune* | Remove-AppxPackage
Get-AppxPackage -allusers *maps* | Remove-AppxPackage
Get-AppxPackage -allusers *messaging* | Remove-AppxPackage
Get-AppxPackage -allusers *solitaire* | Remove-AppxPackage
Get-AppxPackage -allusers *wallet* | Remove-AppxPackage
Get-AppxPackage -allusers *bingfinance* | Remove-AppxPackage
Get-AppxPackage -allusers *bing* | Remove-AppxPackage
Get-AppxPackage -allusers *onenote* | Remove-AppxPackage
Get-AppxPackage -allusers *phone* | Remove-AppxPackage
Get-AppxPackage -allusers *sticky* | Remove-AppxPackage
Get-AppxPackage -allusers *sway* | Remove-AppxPackage
Get-AppxPackage -allusers *3d* | Remove-AppxPackage
Get-AppxPackage -allusers *bingweather* | Remove-AppxPackage
Get-AppxPackage -allusers *holographic* | Remove-AppxPackage

Add windows 10 store back after accidentally removing it with remove-appxpackage 😬

First list all the packages and find the windows store package full name.

Get-AppxPackage | Select PackageFullName

Then run this PowerShell command, replacing the ****** with the PackageFullName from above:

Add-AppxPackage -register "C:\Program Files\WindowsApps\******\AppxManifest.xml" -DisableDevelopmentMode

Eg mine was:

Add-AppxPackage -register "C:\Program Files\WindowsApps\Microsoft.WindowsStore_12005.1001.1.0_x64__8wekyb3d8bbwe\AppxManifest.xml" -DisableDevelopmentMode

If you really must completely remove a package use DISM

list packages with dsm

DISM /Online /Get-ProvisionedAppxPackages | select-string Packagename

delete with dsm

DISM /Online /Remove-ProvisionedAppxPackage /PackageName:PACKAGENAME

My list of commonly deleted packages for a development pc:

You can copy paste these into an admin powershell terminal.

DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.BingTranslator_5.6.0.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:7EE7776C.LinkedInforWindows_2.1.7098.0_neutral_~_w1wdnht996qgy
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.BingWeather_4.36.20714.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Messaging_2019.125.32.1000_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Microsoft3DViewer_7.2003.11022.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftOfficeHub_18.2004.1162.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftSolitaireCollection_4.7.5012.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.MicrosoftStickyNotes_3.7.126.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Office.Desktop.PowerPoint_16051.11629.20246.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Office.Desktop.Publisher_16051.11629.20246.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Office.Desktop.Word_16051.11629.20246.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Office.OneNote_16001.12730.20190.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.OneConnect_5.2002.431.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.People_2020.324.807.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Print3D_3.3.791.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.ScreenSketch_2019.904.1644.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.SkypeApp_14.56.102.0_neutral_~_kzf8qxf38zg5c
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.Wallet_2.4.18324.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsAlarms_2020.407.2348.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:microsoft.windowscommunicationsapps_16005.12624.20368.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsFeedbackHub_2019.1111.2029.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.WindowsMaps_2021.2003.15.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.YourPhone_2020.428.46.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.ZuneMusic_2019.20022.11011.0_neutral_~_8wekyb3d8bbwe
DISM /Online /Remove-ProvisionedAppxPackage /PackageName:Microsoft.ZuneVideo_2019.20022.11011.0_neutral_~_8wekyb3d8bbwe

It would be nice to remove edge also but as it turns out windows wont allow you to do that, there are some hacky workarounds to temporarily remove it but updates will just override the changes and I hardly think its worth potentially f**king your OS up over.

4. Install your fav windows packages with chocolatey.

Install chocolatey

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

Test if it worked by typing choco and seeing the version output.

Set file explorer settings for windows (you will need to create .config and non-standard file types in notepad etc).

$key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced'
Set-ItemProperty $key Hidden 1
Set-ItemProperty $key HideFileExt 0
Set-ItemProperty $key ShowSuperHidden 1
Stop-Process -processname explorer

Installing choco packages

One by one:

choco install vscode
choco install docker-desktop
choco install whatsapp

or with a packages.config file

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="vscode" />
  <package id="docker-desktop" />
  <package id="whatsapp" />
  <package id="vlc" />
  <package id="paint.net" />
  <package id="spotify" />
  <package id="bitnami-xampp" />
  <package id="zoom" />
  <package id="steam" />
  <package id="7zip" />
  <package id="handbrake" />
  <package id="itunes" />
  <package id="notepadplusplus" />
  <package id="winscp" />
  <package id="putty" />
</packages>

Then cd into the folder of the packages file and run choco install .\packages.config keep pressing A to allow confirmations

Let choco configure windows taskbar for you

choco install taskbar-winconfig --params "'
/AUTOTRAY:no
/COMBINED:yes
/CORTANA:no
/INK:no
/LOCATION:right
/LOCKED:yes
/PEOPLE:no
/STORE:no
/TASKVIEW:no
/KEYBOARD:no
/USEPOWERSHELL:yes'"

Delete the windows edge shortcuts from taskbar and desktop

Choco seems like bullshit imo, half of the packages didnt install with this method ^

Posted on SO about it: https://stackoverflow.com/questions/61751456/

Set up windows power config to always on when plugged in

in powershell:

Powercfg /Change monitor-timeout-ac 0
Powercfg /Change monitor-timeout-dc 60
Powercfg /Change standby-timeout-ac 0
Powercfg /Change standby-timeout-dc 20

5. Set up WSL to use windows docker

instructions from: https://nickjanetakis.com/blog/setting-up-docker-for-windows-and-wsl-to-work-flawlessly

Go into docker settings in windows and expose daemon on port 2375 and save

Install docker on WSL

# Update the apt package list.
sudo apt-get update -y

# Install Docker's package dependencies.
sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

# Download and add Docker's official public PGP key.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Verify the fingerprint.
sudo apt-key fingerprint 0EBFCD88

# Add the `stable` channel's Docker upstream repository.
#
# If you want to live on the edge, you can change "stable" below to "test" or
# "nightly". I highly recommend sticking with stable!
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

# Update the apt package list (for the new apt repo).
sudo apt-get update -y

# Install the latest version of Docker CE.
sudo apt-get install -y docker-ce

# Allow your user to access the Docker CLI without needing root access.
sudo usermod -aG docker $USER

# Install Python 3 and PIP.
sudo apt-get install -y python3 python3-pip

# Install Docker Compose into your user's home directory.
pip3 install --user docker-compose

The next step is to make sure $HOME/.local/bin is set on your WSL $PATH.

echo $PATH

Connect to a remote Docker daemon with this 1 liner:

echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc

Check it works.

If the below doesnt work or throws a not running message, try restart everything first.

# You should get a bunch of output about your Docker daemon.
# If you get a permission denied error, close + open your terminal and try again.
docker info

# You should get back your Docker Compose version.
docker-compose --version

Create and modify the new WSL configuration file:

sudo nano /etc/wsl.conf

# Now make it look like this and save the file when you're done:
[automount]
root = /
options = "metadata"

After restarting try enter a project folder with a docker compose and docker-compose up

If you have any problems... Good luck with them.

...

Thats all folks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment