Skip to content

dvesic/windows-setup

Repository files navigation

Install blank machine to full operating mode

All files and instructions needed to setup Home/Work machine under Windows 11

This is not usual "setup" guide; this is more quick and efficient guide (and mostly reminder to myself 😀) how to setup blank machine with least amount of effort.

Also, this targets minimum applications (core) + specific ones for home usage/development (home). Given that this is higly dependent on what you actually use PC for, it is not universal list 😄

I believe that general principles (MS Store, WinGet + Cloud storage) can be applied to everyone:

  • Any created artifact (= files) and configuration store on cloud storage/GitHub
  • Make installation breeze, using automation (MS Store / WinGet) and minimalist approach what is actually needed
  • Use existing mechanisms (VS Code Settings Sync, PyCharm Settings Sync, cloud for file based settings) to sync various details between workplaces
  • Finally, I suggest that for testing and fine tuning you use Windows Sandbox, excellent low profile Win instance. You can install winget in Sandbox via Windows PowerShell, details here. Do not forget to add -Scope AllUsers given that bunch of applications are system ones. Here is that script, but "verbose" version:
Install-PackageProvider -Name NuGet -Force
Install-Module -Name Microsoft.WinGet.Client -Force -Repository PSGallery -Scope AllUsers
Repair-WinGetPackageManager
Notes about Microsoft.PowerShell.Management\Test-Connection : Access is denied.

In case above fails with Microsoft.PowerShell.Management\Test-Connection : Access is denied. try to repair with this:

winmgmt /resetrepository
Restart-Service Winmgmt

and try again.

Notes about Sandbox
  • Last command often fails for first time, so expect to repeat it.
  • For some strange reason, if your Sandbox have "Region" (System / Time & language / Language & region ) set to World some installations (Windows Terminal, for example) will fail. Just set proper Region before running first WinGet installation.

Having that, I split installation into three phases:

  1. Essential - for OS and core (Cloud services)
  2. Core Applications - mandatory ones, no matter type of machine (Home/Work) is in question
  3. Rest - either for fun/hobbies or just addition to previous list

Essential

  • Windows 11, fully patched (Windows 10 will do, but I do not see point of using EOL operating system)
  • Cloud storage; any will do, but I prefer those which are mirrored on file system (Google Drive, OneDrive) - easier to work with
  • YU Keyboard from vesic.org
    • This is "local" solution for typing accent characters (ćčšđžĆČŠĐŽ) for Balkan nations (Serbian, Bosnian, Croatian, Slovenian...) on non-YU keyboards.
    • To be fair to others, won't put it in CORE / HOME packages, but leave in optional section :-)

MS Store

Why MS Store? One time install, tied to MS Account, easy to install on other machine, auto-update...Also, some of applications simply can't be installed over winget, at least for now.

UPDATE: got couple of comments that this installation is "Store heavy", offering less flexibility than "pure" winget installation. Having that in mind, this version of installation is moved toward that goal - only actual winget and Windows Notepad should be installed over MS store - everything else can be done over winget itself:

  • App Installer (WinGet)
  • Windows Notepad
  • Windows Terminal - actual installation is over winget. Here are just details how can you keep your configuration on cloud storage.
    • Currently, there is no option to change Setting folder of Windows Terminal. In order to correct that (and store it on cloud storage), here is Powershell script: WinTermSetSym.ps1 for removing "original" and re-mapping to cloud folder with settings (run elevated):
Remove-Item -Force -Recurse -Path "$Env:LocalAppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState"
New-Item -ItemType SymbolicLink -Path "$Env:LocalAppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState" -Target "$env:OneDriveConsumer\Utils\WindowsTerminal\LocalState"

Once WinGet is installed, you are ready to install Core applications:

Core Applications

winget import -i .\winget\winget-core.json --accept-package-agreements
Reference: Bulk export/import with WinGet
  • Application list export: winget export -o .\winget-export.json
  • Bulk import: winget import -i .\winget-export.json --accept-package-agreements

FiraCode font

My work relies on CMD/Windows terminal prompt; one great resource for that is FiraCode font, monospaced font for development.

Install it last, after all other software and then enable ligatures for Windows Terminal, VS Code and PyCharm. If you use Oh My Posh, instructions for installation are below.

List of core applications

Essentials

  • Microsoft Visual C++ Redistributable - sooner or later (usually sooner), one of applications will require this. Note - this takes quite time to get installed.

  • Microsoft.WindowsTerminal

  • Microsoft.PowerShell

  • Microsoft.PowerToys

  • Microsoft.OpenSSH.Beta Not needed anymore. Windows 11 has built in SSH. Here is PowerShell script to check / enable (elevation needed): SSHCheckAndInstall.ps1

    • You can use OpenSSL for key generation: ssh-keygen.exe -t ecdsa -b 521 -f key.private
    • Keys should be stored in "%USERPROFILE%\.ssh"
  • Microsoft.VisualStudioCode Visual Studio Code

  • Microsoft.Edit - Nostalgia :-) Very simple editor from MS-DOS times

    • in Ubuntu, you could install it with: sudo snap install msedit
  • Joplin.Joplin Open source, Markdown note taking application. Excellent sync options between multiple machines.

  • chmln.sd Efficient search & replace CLI tool.

  • 7zip.7zip - Excellent archiver

  • Ghisler.TotalCommander. Settings for shortcut, to use cloud based ini files:

    • TOTALCMD64.EXE /i="G:\My Drive\Utils\totalcmd\wincmd.ini" /F="G:\My Drive\Utils\totalcmd\wcx_ftp.ini"
  • Espanso.Espanso Open Source text expander

  • BurntSushi.ripgrep.MSVC - rg - line-oriented search tool that recursively searches the current directory for a regex pattern.

  • gerardog.gsudo - sudo for Windows

  • ajeetdsouza.zoxide - zoxide is a smarter cd command, inspired by z and autojump. Installation details here; add this to your PowerShell profile:

    Invoke-Expression (& { (zoxide init powershell | Out-String) })
  • JanDeDobbeleer.OhMyPosh - The most configurable prompt utility for any shell.

    • Install fonts directly using Oh My Posh:
    oh-my-posh font install meslo
    oh-my-posh font install FiraCode

For both tools, oh-my-posh and zoxide I recommend to keep PowerShell profile on cloud drive and use it to SymLink local profile to it. Script for that is PowerShellProfileSym.ps1 and minimal PowerShell profile is here: Microsoft.PowerShell_profile.ps1

Media (video/image)

Browsers

  • Opera.Opera
    • Launching Opera w/o proxy: C:\Users\dvesic\AppData\Local\Programs\Opera\launcher.exe --no-proxy-server="
  • Mozilla.Firefox.DeveloperEdition FireFox Developer Edition, as complement to Chromium based browsers.

Tools

Home Applications

winget import -i .\winget\winget-home.json --accept-package-agreements

List of applications

Development / Python

  • Git.Git
    • git config --global user.name "dvesic"
    • git config --global user.email "Dejan@Vesic.Org"
    • Check for update: git update-git-for-windows
  • GitHub.cli
  • dbeaver.dbeaver - Universal database tool
  • WinMerge.WinMerge - Open Source differencing and merging tool for Windows
  • JetBrains.PyCharm.Professional All purpose editor and IDE for Python. There is community (free) edition as well.
  • WinSCP.WinSCP
    • Use /ini to point out to cloud settings file: winscp.exe /ini="G:\My Drive\Utils\WinSCP\WinSCP.ini"
  • Microsoft.WSL MS Windows Subsystem for Linux

Cloud

Various Tools

  • SumatraPDF.SumatraPDF - brilliant application for PDF, eBook (epub, mobi), comic book (cbz/cbr), DjVu, XPS, CHM and image viewer for Windows.
    # Initial setup: ESC for exit and do not remember open files between sessions
    sd 'EscToExit = false' 'EscToExit = true' $Env:LOCALAPPDATA\SumatraPDF\SumatraPDF-settings.txt
    sd 'RememberOpenedFiles = true' 'RememberOpenedFiles = false' $Env:LOCALAPPDATA\SumatraPDF\SumatraPDF-settings.txt

Communication

Misc

Gaming / fun

Optional HOME applications

# YU-US keyboard by Vesic.Org
winget install -e --id Vesic.Org.US-YU.keyboard --source winget

# Full 365 Office suite
winget install -e --id Microsoft.Office

winget install -e --id AnyDeskSoftwareGmbH.AnyDesk

winget install -e --id Microsoft.Sysinternals.RDCMan

winget install -e --id MKVToolNix.MKVToolNix
winget install -e --id GuinpinSoft.MakeMKV

winget install -e --id GlenSawyer.MP3Gain

winget install -e --id Garmin.GarminExpress
winget install -e --id LIGHTNINGUK.ImgBurn

winget install -e --id Dell.CommandUpdate.Universal
winget install -e --id Logitech.UnifyingSoftware

winget install -e --id Gyan.FFmpeg

winget install -e --id yt-dlp.yt-dlp

# Essencial for multi-os / OneDrive synced projects
winget install -e --id direnv.direnv

Changing WSL shell to zsh

Given that WSL is native accompanuing environment for development, it deserves probably same set of instrutions / applications as for Windows above.

For start, I am just leaving script which installs zsh instead of default bash shell:

  1. Copy setup_zsh.sh to WSL environment
  2. Make it executable: chmod +x setup_zsh.sh
  3. Run it: ./setup_zsh.sh

Finally, adjust/check if your Windows Terminal profile for Ubuntu:

  • Uses FiraCode Nerd Font Mono as font for profile
  • Make sure that Additional setting / Apearance / Builtin Glyphs is turned on

Last updated: 2026-02-19

About

All files and instructions needed to setup Home/Work machine under Windows 11

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors