![screenshot](https://i.imgur.com/hoacRnC.jpg "screenshot") # How i do development on windows ### Get the latest build of windows *For some dumb reason windows always installes an old version so i use the insider program to get the latest windows version* 1. Settings > Updates & Security > Windows Insider Program > do your things here 2. Settings > Updates & Security > Update Windows > Check for updates *(This will take a shitload of time)* ### Base programs i always install - [git](https://git-scm.com/downloads) *ofc* - [chocolatey](https://chocolatey.org/) *a package manager for windows* - [nodejs](https://nodejs.org/en/) *for my nodejs development* - [Go Lang](https://golang.org/dl/) *for my go development* - [vsCode](https://code.visualstudio.com/) *code editor* - [Windows Terminal](https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701?activetab=pivot:overviewtab) or [Fluent Terminal *my favorite*](https://github.com/felixse/FluentTerminal) *a nice terminal* - [wox](http://www.wox.one/) *a quick launch tool* ### Turn on hyper-v *some programs work better with this tunred on so i turn this on usually* Control Panel > Programs > Turn Windows features on or off > hyper-v ### Linux Subsystem As administrator run: *(to allow the windows subsystem)* ``` Enable-WindowsOptionalFeature -Online -FeatureName $("VirtualMachinePlatform", "Microsoft-Windows-Subsystem-Linux") wsl --set-default-version 2 ``` Install [Ubuntu 18.04 LTS](https://www.microsoft.com/nl-nl/p/ubuntu-1804-lts/9n9tngvndl3q?rtc=1&activetab=pivot:overviewtab) *After installing you might have to convert the subsystem to windows subsystem version 2 using:* ```sh wsl -l -v wsl --set-version Ubuntu 2 ``` To view localhost only exposed servers create `.wslconfig` in the user root dir with the following contents: ``` [wsl2] localhostForwarding=true ``` ### Docker Download [Docker desktop](https://www.docker.com/products/docker-desktop) After install: 1. go to Docker desktop settings 3. Under command line enable: Enable experimental features 2. Under general enable: Enable the experimental WSL 2 based engine *(if the docker desktop craches install this [kernel update](https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel))* 3. [Install docker in the ubuntu subsystem](https://docs.docker.com/install/linux/docker-ce/ubuntu/) *there is no need to start the docker service* 4. In the docker desktop settings > Resources > WSL intergration > Enable ubuntu or whatever you have ### Fish, omf & nvm in the subsystem I use fish as my main shell on linux so i also install it on my subsystem ```sh # install fish v3 sudo add-apt-repository ppa:fish-shell/release-3 sudo apt install fish # set fish as main shell chsh -s `which fish` # install oh my fish curl -L https://get.oh-my.fish | fish # install nvm (node version manager) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash omf install nvm nvm install 13 nvm use 13 nvm alias default 13 # Get a nice fish theme if you want: omf install nai ``` I usually edit the `.config/omf/init.fish` to add a few handy shotcuts: ```fish alias h='cd ~' # ... ``` ## Theming & Custom settings ### Fish & vscode See my [dotfiles](https://github.com/mjarkk/dotfiles) #### Wox 1. Download: https://github.com/dracula/wox 2. Place `Dracula.xaml` in `%LOCALAPPDATA%\Wox\app-X.X.XXX\Themes`, in wox type `restart wox` > `settings` > Theme > Dracula ## Problems - This setup eats noticable more memory than working on my linux machine, around 3-5gb more ram usage. - Sometimes after login the localhost forwarding in wsl doesn't work and the only solution to fix it seems to be restarting my pc - Restarting wsl *(`wsl --shutdown` > open a terminal)* breaks the docker access from within wsl, the docker command still work but starting a webserver and trying access it doesn't work. Usually i restart my pc if i still need to use docker after this, but i suspect you can also figgle around with the docker desktop settings to get it working again. - Sometimes the subsystem or the fish shell seems to crach but kinda still works???, it's supper wired but in the end i always restart my pc to solve it *(note: Always when this happends there is also an update that can be installed when rebooting)*.