Windows 10 workstation setup
Drivers
- Intel
- Intel Driver and Support Assistant
- Lenovo
- Lenovo Service Bridge
- Lenovo System Update
- Lenovo Vantage
- NETGEAR
- NVIDIA
- NVIDIA Control Panel
- NVIDIA RTX Desktop Manager
Windows features
-
Containers
-
Hyper-V
- Enable from a PowerShell terminal:
Get-WindowsFeature -Name Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -
Windows Subsystem for Linux
(WSL)- Review and configure WSL from the command line
REM displays installed linux systems
wsl -l -v
REM sets default to version 2
wsl --set-default-version 2
REM updates the system (can fix start errors)
wsl.exe --update- Configure the access to WSL from Windows
REM adds a firewall rule to enable inbound from WSL
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow- Look at the available options to configure
strings "/mnt/c/Program Files/WSL/wslservice.exe" | egrep "^wsl2\.|^experimental\."
- Configure WSL in
C:\Users\<username>\.wslconfig
(create the file and restart WSL afterwards)
[wsl2]
memory=12GB
swap=0GB
debugConsole=false
localhostforwarding=true
# nestedVirtualization=true doesn't work
nestedVirtualization=false
vmIdleTimeout=60000
safeMode=false
# options: NAT (default), mirrored, bridged
networkingMode=NAT
# networkingMode=bridged
# vmSwitch="Internet"
[experimental]
# default: true
autoMemoryReclaim=dropcache
# default: false
sparseVhd=true
# ignoredPorts=
# default: false
hostAddressLoopback=true- Configure Visual Studio Code (see StackOverflow)
# assuming Visual Studio Code has been installed on Windows 10 in "C:\Programs\Microsoft VS Code"
echo 'export PATH=$PATH:"/mnt/c/Programs/Microsoft VS Code/bin/"' >> ~/.bashrc
exec "$SHELL"
code .
Windows optional features
- AV1 Video Extension
- HEIC Image Viewer, Converter
- HEIF Image Extensions
- HEVC Video Extensions from Device Manufacturer
- OpenSSH
- Raw Image Extension
- Web Media Extensions
- Web Image Extensions
- Windows Package Manager Source (winget) V2
Windows configuration
Multiple GPU
-
Windows Settings
>System
>Display
>Graphics settings
>Graphics performance preference
- Select an application and explicitely set it to run on High performance
-
Powershell
- Open
<Path_to_Documents>\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
in Visual Studio Code
code $PROFILE
- Open
Windows store
-
Microsoft Photos
-
Microsoft Clipchamp
-
Raw Image Extension
- Can be downloaded from apps.microsoft.com
-
Ubuntu on Windows
- Once installed, look at Ubuntu setup
- Open a shell in Ubuntu and create or update
/etc/wsl.conf
file to enable chmod (required for SSH) and avoid issues with npm commands (see Advanced settings configuration in WSL)
# /etc/wsl.conf
[automount]
options = "metadata"
[interop]
appendWindowsPath = false- Restart WSL from Windows
wsl --shutdown
- Copy SSH key (must be generated before in Windows with Git Bash for example) and review permissions (see Sharing SSH keys between Windows and WSL 2)
cp -r /mnt/c/Users/<myusername>/.ssh/id_rsa* ~/.ssh/
chmod 700 ~/.ssh/
chmod 644 ~/.ssh/*.pub
chmod 600 ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_rsa -
- Download the msixbundle file from the latest release
- Execute in PowerShell
Add-AppxPackage .\Microsoft.WindowsTerminal_Win10_xxx.msixbundle
-
- Download the msixbundle file and licence from the latest release
- Execute in PowerShell
Add-AppxProvisionedPackage -online -PackagePath .\Microsoft.DesktopAppInstaller_xxx.msixbundle -LicensePath .\xxx_License1.xml
- Double check it works with
winget list
- If needed, you can look at the package with
Get-AppxPackage microsoft.desktopappinstaller
and uninstall it withRemove-AppxPackage -Package Microsoft.DesktopAppInstaller_xxx
Applications
Inventory
-
- Unzip all files from a folder:
"C:\Program Files\7-Zip\7z.exe" e *.zip
- Unzip all files from a folder:
-
Acrobat Reader
-
Balena Etcher (cross-platform)
- Alternative to create a bootable USD drive: Rufus (more functionalities)
-
CPU-Z
-
- Fix permission error (see Issue #1156)
sudo groupadd docker
sudo adduser $USER docker
sudo chown root:docker /var/run/docker.sock
sudo chmod g+w /var/run/docker.sock
newgrp docker- Alternative: Rancher Desktop (docs, GitHub)
-
Docker Engine
- Install from a Powershell terminal (Prepare Windows for containers):
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
.\install-docker-ce.ps1-
Review Docker configuration:
C:\ProgramData\docker\config\daemon.json
-
Start Docker
"C:\Programs\docker-20.10.19\docker\dockerd.exe" -H npipe:////./pipe/docker_windows
- Create Docker context from the original terminal
docker context create win --docker host=npipe:////./pipe/docker_windows
- Use Docker context from another terminal as an Administrator
docker -c win ps
-
FileZilla
-
- SSH key creation in
Git Bash
(see Adding a new SSH key to your GitHub account)
# ED25519
ssh-keygen -t ed25519 -C "firstname.lastname@email.com"
# RSA
ssh-keygen -t rsa -b 4096 -C "firstname.lastname@email.com"- Configure git (can be viewed & edited in
%userprofile%\.gitconfig
)
# git config --global --edit
git config --global core.longpaths true
git config --global core.autocrlf false - SSH key creation in
-
Google Chrome
- Extensions: Dark Reader
- Enable experimental features (like dark mode) chrome://flags
-
Java Runtime Environment (JRE)
-
JetBrains Toolbox App (JetBrains Licenses)
- GoLand
-
- Plugins:
KeePassHttp
- Google extensions:
KeePassHttp-Connector
- Plugins:
-
Make (2 options)
-
MariaDB Community Server (to get the GUI client)
-
Microsoft Office
-
minikube
-
MongoDB Atlas CLI
-
MySQL Workbench
-
- Edit files in nodejs folder to replace "-g" by "--location=global" (see stackoverflow question #72401421)
- Update packages
# update packages
npm update -g
## update NPM
npm install npm@latest -g -
NordVPN
-
OpenVPN
-
PeaZip
-
pgAdmin
-
- Download latest stable from GitHub releases page
- Initalize a machine with
podman machine init
and start it withpodman machine start
-
# looks for the available versions
winget search RubyInstallerTeam.Ruby
# installs a specific version and restarts the terminal
winget install RubyInstallerTeam.Ruby.3.2
# makes sure ruby is available from the terminal
ruby -v
gem -v -
Slack
-
- Set
VAGRANT_DEFAULT_PROVIDER
environment variable tovirtualbox
orhyperv
and restart Windows - Look at the cheat sheet
- Set
-
-
Extensions:
Angular Language Service
,CMake Language Support
,CSS Formatter
,Debbuger for Firefox
,Dev Containers
,Docker
,EditorConfig for VS Code
,ESLint
,Excalidraw
,Go
,HashiCorp Terraform
,Kubernetes
,Makefile Tools
,Markdown Table Pretifier
,markdownlint
,MongoDB for VS Code
,PHP Intelephense
,Playwright Test for VSCode
,Puppet
,Python
,Puppet Debugger
,Snippets and Syntax Highlight for Gherkin (Cucumber)
,Tailwind CSS IntelliSense
,Vue - Official
,WSL
,YAML
-
User >
setttings.json
(C:\Users\<username>\AppData\Roaming\Code\User\settings.json
):
{
"editor.minimap.enabled": false,
"security.workspace.trust.untrustedFiles": "open",
"redhat.telemetry.enabled": false,
"[markdown]": {
"editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
},
"terminal.integrated.defaultProfile.windows": "Ubuntu (WSL)",
"[python]": {
"editor.formatOnType": true
},
"playwright.reuseBrowser": true,
"vs-kubernetes": {
"vs-kubernetes.crd-code-completion": "disabled"
},
"workbench.colorTheme": "Visual Studio Dark",
"typescript.updateImportsOnFileMove.enabled": "always",
"git.openRepositoryInParentFolders": "never",
"puppet.installDirectory": "C:\\Programs\\PuppetDevelopmentKit",
"puppet.installType": "pdk",
"go.toolsManagement.autoUpdate": true,
"workbench.editorAssociations": {
"*.md": "default"
},
}- Workspace >
settings.json
:
{
"folders": [
...
],
"settings": {
...
"vs-kubernetes": {
"disable-linters": ["resource-limits"],
...
}
}
} -
-
- Self-generated certificate for .NET (ref. stackoverflow.com/questions/56409580)
- Execute "certlm.msc" to open the certificate manager
- Go to Personal/Certificates and locate localhost certificate
- Move the certificate to "Trusted Root Certification Authorities/Certificates"
- Self-generated certificate for .NET (ref. stackoverflow.com/questions/56409580)
-
VLC
-
- solution found on GitHub
- as indicated in the faq go to eternallybored.org/misc/wget and download the latest x64 version
- extract the exe file and copy it in your local cmder installation bin directory
-
WinDirStat
-
winget install --id MikeFarah.yq
Binaries in PATH
-
- Create an environment variable to access Docker engine running on WSL
Key Value DOCKER_HOST tcp://localhost:2375 - Make a check (the output doesn't display during the run, strange...)
docker run --name helloworld hello-world
docker logs helloworld
docker rm helloworld -
kubeseal
-
mongosh
-
- Run as a service account:
psexec -i -s cmd.exe
- Run as a service account:
-
Terraform
Chocolatey packages
- Install applications with Chocolatey (package manager for Windows)
# installs 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://community.chocolatey.org/install.ps1'))
# installs Firefox
choco install -y firefox
# installs Windows Terminal
choco install -y microsoft-windows-terminal
# VSCode + Extensions (an example provided here)
choco install -y vscode --params "/NoDesktopIcon"
code --install-extension ms-vscode.powershell
# installs git client
choco install -y git.install --params "/GitOnlyOnPath /NoAutoCrlf /NoShellIntegration"
# installs .NET Framework 4.8 developer pack
choco install -y netfx-4.8-devpack
# installs latest .NET SDK (6.0 in October 2022)
choco install -y dotnet-sdk
# installs Visual Studio 2022 Build tools & NuGet
choco install -y visualstudio2022buildtools nuget.commandline
# installs Notepad++
choco install -y notepadplusplus
Utilities
Hard Drive Backup
Oldies
- ACDSee
- CCleaner
- ColorPic
- DaemonTools
- Everest Ultimate
- Gadwin PrintScreen
- HDGraph
- K-Lite Codec Pack
- Magic Draw
- Partition Magic
- PDF Creator
- Picasa
- QuickTime
- TestDisk
- Toad
- UltraEdit
- Unstoppable Copier
- VirtualDub
- Winace
- Winamp
- XML Spy
Configuration
- Control Panel / User Accounts /Credential Manager