Skip to main content

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
    # 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

Windows store

  • Microsoft Photos

  • Microsoft Clipchamp

  • Raw Image Extension

  • Ubuntu on Windows

    # /etc/wsl.conf
    [automount]
    options = "metadata"

    [interop]
    appendWindowsPath = false
    • Restart WSL from Windows
    wsl --shutdown
    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
  • Windows Terminal

    • Download the msixbundle file from the latest release
    • Execute in PowerShell Add-AppxPackage .\Microsoft.WindowsTerminal_Win10_xxx.msixbundle
  • Winget (docs)

    • 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 with Remove-AppxPackage -Package Microsoft.DesktopAppInstaller_xxx

Applications

Inventory

  • 7-Zip

    • Unzip all files from a folder: "C:\Program Files\7-Zip\7z.exe" e *.zip
  • Acrobat Reader

  • Azure CLI

  • Balena Etcher (cross-platform)

  • CPU-Z

  • Docker Desktop

    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
  • Docker Engine

    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
  • Draw Desktop

  • FileZilla

  • Git for Windows

      # 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
  • GitKraken

  • Go

  • Google Chrome

  • Greenshot

  • Java Runtime Environment (JRE)

  • JetBrains Toolbox App (JetBrains Licenses)

    • GoLand
  • KeePass

  • Make (2 options)

  • MariaDB Community Server (to get the GUI client)

  • Microsoft Office

  • minikube

  • Mockoon

  • MongoDB Atlas CLI

  • MongoDB Compass

  • Mozilla Firefox

  • MySQL Workbench

  • Node.js & NPM

    # update packages
    npm update -g

    ## update NPM
    npm install npm@latest -g
  • NordVPN

  • Notepad++

  • OpenVPN

  • PDF24 Creator

  • PeaZip

  • pgAdmin

  • Podman

    • Download latest stable from GitHub releases page
    • Initalize a machine with podman machine init and start it with podman machine start
  • Postman

  • Process Explorer

  • Puppet Agent

  • Puppet Development Kit

  • Ruby

    # 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

  • Vagrant

    • Set VAGRANT_DEFAULT_PROVIDER environment variable to virtualbox or hyperv and restart Windows
    • Look at the cheat sheet
  • VLC

  • VirtualBox

  • Visual Studio Code

    • 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"],
    ...
    }
    }
    }
  • Visual Studio 2022

    • 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"
  • VLC

  • wget

    • 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

  • WinMerge

  • yq

    winget install --id MikeFarah.yq
  • zoomit

Binaries in PATH

  • Docker CLI

    • Create an environment variable to access Docker engine running on WSL
    KeyValue
    DOCKER_HOSTtcp://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
  • Helm

  • Kubectl

  • kubeseal

  • mongosh

  • PsExec

    • Run as a service account: psexec -i -s cmd.exe
  • 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