I will assume that as an appreciator of linux you are already knowledgeable on how to install an operating system.
Here are my notes from installing windows literally just to play a single game that can actually run just fine on linux with an anti-cheat that fully supports linux should the developer decide to actually allow it for no additional cost or effort on their own part... 
The general philosophy of this guide is it's just windows so I don't care about it being usable outside of running one game and don't care if it breaks I'll just fresh install it again or again try to convince my friends to play less shit games.
Some general dual booting advice
- Use ventoy, it's great
- Contain windows on it's own physical drive; this prevents it messing with the boot record.
- It is not necessary to locate the windows drive as far from your other drives as possible like a pariah but it can be emotionally satisfying.
- Avoid mounting the NTFS drive in linux. Windows has a tendency to throw a tantrum if it thinks someone touched it's stuff.
- If windows can't boot because of file system issues then ntfsfix on linux usually sorts it out.
- Shared data drives should use FAT
I went with windows 10 because I don't care about long term viability of this install and I heard there is no way around having a microsoft account anymore in windows 11. I didn't bother confirming if this is true.
5 minutes later AMD decided to drop support for windows 10... cool . At least they got shamed into changing their minds shortly afterwards
<-- imagine this but I dunno Steve Balmer flippin off AMD I guess
General
- Ctrl + Shift when clicking on apps to run as admin, in Powershell can tell by "administrator" in title bar
- Often requires confirmations even when using force args
- Windows often requires reboots for installing things sometimes without saying anything
Powershell
there is no sudo but you can elevate permissions with
Start-Process "powershell" -Verb RunAs
this starts a new window though..
Software
Package manager
Winget
Install WinGet, Window's "built-in" package manager that isn't built in.
Install-Module -Name Microsoft.WinGet.Client
now use winget to install powershell.
oh you thought you already had powershell because you just used it to install winget?
ha you fool!
You will need powershell 7 (or pwsh vs Windows Powershell, great naming scheme guys) in order to use many basic commands, which needs to be installed seperatley to the other 2-3 useless shell environments windows came with. (this might not be need on windows 11? I havent checked)
winget install Microsoft.Powershell
Now switch to powershell 7 from here on out
Start-Process "pwsh" -Verb RunAs
to allow windows updates from powershell
Install-Module -Name PSWindowsUpdate
Now that you have the official windows built in package manager you should install the third party package manager that people actually use
Chocolatey
Set-ExecutionPolicy AllSigned
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'))
Package search
https://community.chocolatey.org/packages
Utilities
included redundant instructions for winget and chocolately to future proof for when microsoft decides to sunset winget for an AI packagemanager or someshit and for when chocolately goes bankrupt because who is paying for a packagemanager??
Some basic apps
winget install --accept-package-agreements --accept-source-agreements -e --id=LibreWolf.LibreWolf ; winget install --accept-package-agreements --accept-source-agreements -e --id=nomacs.nomacs ; winget install --accept-package-agreements --accept-source-agreements -e WinDirStat.WinDirStat ; winget install --accept-package-agreements --accept-source-agreements -e --id Videolan.Vlc ; winget install --accept-package-agreements --accept-source-agreements -e --id CodecGuide.K-LiteCodecPack.Full ; winget install --accept-package-agreements --accept-source-agreements -e --id Microsoft.PowerToys ; winget install --accept-package-agreements --accept-source-agreements -e --id Rufus.Rufus ; winget install --accept-package-agreements --accept-source-agreements -e --id Lexikos.AutoHotkey ; winget install --accept-package-agreements --accept-source-agreements -e --id Flameshot.Flameshot ; winget install --accept-package-agreements --accept-source-agreements -e --id 7zip.7zip
putty is no longer needed as powershell can support ssh now.
Truly ground breaking stuff from windows here.
Apps that I use but you might not need
winget install --accept-package-agreements --accept-source-agreements -e --id=MullvadVPN.MullvadVPN ; winget install --accept-package-agreements --accept-source-agreements -e --id Zoom.Zoom ; winget install --accept-package-agreements --accept-source-agreements -e --id Adobe.Acrobat.Reader.64-bit
::: spoiler Runtimes that you will inevitably need
winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2005.x64 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2008.x64 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2010.x64 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2012.x64 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2013.x64 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2015.x64 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2017.x64 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.VCRedist.2022.x64
winget install --accept-package-agreements --accept-source-agreements -e --id=Git.Git ; winget install --accept-package-agreements --accept-source-agreements -e --id=Python.Python.3.0 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Python.Python.2
winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.DotNet.DesktopRuntime.3_1 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.DotNet.DesktopRuntime.5 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.DotNet.DesktopRuntime.6 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.DotNet.DesktopRuntime.7 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.DotNet.DesktopRuntime.8 ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.DotNet.DesktopRuntime.9
:::
Remember when I said you should get the 3rd party package manager? one reason is some versions of dotnet are not included in the winget package manager. Some MICROSOFT DOT NET packages are not included in the MICROSOFT windows package manager
'cmon Microsoft this should have been a home run, you're killing me here.
choco install -y python3 python2 git dotnet dotnet3.5 dotnetfx vcredist140 vcredist2005 vcredist2008 vcredist2010 vcredist2012 vcredist2013 vcredist2015 vcredist2017 visualstudio2019-workload-vctools visualstudio2017-workload-vctools visualstudio2022-workload-vctools--force --force-dependencies
choco install -y librewolf 7zip PowerToys vlc flameshot--force --force-dependencies
choco install -y mullvad-app zoom adobereader --force --force-dependencies
couldn't hurt to reboot
Gaming
Now the reason for this whole operation
choco install -y directx steam itch librehardwaremonitor autohotkey.install mumble --force --force-dependencies
winget
winget install --accept-package-agreements --accept-source-agreements -e --id=KhronosGroup.VulkanRT ; winget install --accept-package-agreements --accept-source-agreements -e --id=Microsoft.DirectX ; winget install --accept-package-agreements --accept-source-agreements -e --id Valve.Steam ; winget install --accept-package-agreements --accept-source-agreements -e --id Discord.Discord ; winget install --accept-package-agreements --accept-source-agreements -e --id=Mumble.Mumble.Client ; winget install --accept-package-agreements --accept-source-agreements -e LibreHardwareMonitor.LibreHardwareMonitor ; winget install --accept-package-agreements --accept-source-agreements -e --id OBSProject.OBSStudio
for the convenience of those with cursed taste in games
choco install -y epicgameslauncher
choco install -y ea-app
choco install -y goggalaxy
choco install -y ubisoft-connect
winget
winget install --accept-package-agreements --accept-source-agreements -e --id=ItchIo.Itch ; winget install --accept-package-agreements --accept-source-agreements -e --id=GodotEngine.GodotEngine ; winget install --accept-package-agreements --accept-source-agreements -e --id EpicGames.EpicGamesLauncher ; winget install --accept-package-agreements --accept-source-agreements -e --id GOG.Galaxy ; winget install --accept-package-agreements --accept-source-agreements -e --id HeroicGamesLauncher.HeroicGamesLauncher
2025-11-05 chocolatey discord not working, winget version is working, probably divergent versions but I couldn't be bothered to check
Hardware
AMD Ryzen CPUs
choco install -y amd-ryzen-chipset --force --force-dependencies
https://community.chocolatey.org/packages/amd-ryzen-chipset
AMD GPUs
afaik you have to do this the old skool way
https://www.amd.com/en/support/download/drivers.html
there is an app that can debloat the GPU Driver installer
https://github.com/GSDragoon/RadeonSoftwareSlimmer
but the web installer I got off the amd site has a driver only tickbox that makes this redundant. could be useful if amd decides to start being even more annoying
Nvidia
choco install -y nvidia-app --force --force-dependencies
https://community.chocolatey.org/packages/nvidia-app
There is a way to debloat it but I haven't messed with it
https://forums.guru3d.com/threads/nvslimmer-nvidia-driver-slimming-utility.423072/
Intel
choco install -y intel-dsa --force --force-dependencies
https://community.chocolatey.org/packages/intel-dsa
python aside
supposedly can install python scripts through chocolatey with --source python
but I cannot get it to recognize it's vc++ dependencies even though just using straight pip works???
eh whatever you probably don't care
pip --version
py --list-paths
$Env:PATH += ";C:\Python314\Lib\site-packages\pip"
Debloating
There are a lot of debloating scripts floating around. I used this one, I don't know if it's better or worse than others.
This runs arbritary code from ...someone? it works but I'm not vouching for it's trustworthiness
& ([scriptblock]::Create((irm "https://debloat.raphi.re/")))
Ransomware removal
- I recommend using a VPN if you have one while running activation script or visiting associated website
https://massgrave.dev/
This runs arbitrary code from ...someone? it works but I'm not vouching for it's trustworthiness
The script is actually loaded from github though so I guess that means it's legit and approved by Microsoft...
irm https://get.activated.win/ | iex
If the above is blocked (by ISP/DNS), try this (needs updated Windows 10 or 11):
iex (curl.exe -s --doh-url https://1.1.1.1/dns-query https://get.activated.win/ | Out-String)
Updates
winget upgrade --all --force --accept-source-agreements --disable-interactivity --uninstall-previous ; choco upgrade all -y ; Install-WindowsUpdate -AcceptAll
does windows updates last because there's a good chance of needing to reboot
only works if you installed PSWindowsUpdate earlier
Sometimes claims Install-WindowsUpdate isn't recognized but later works with no changes to system 
Mouse fix
windows does dodgy stuff to mouse acceleration, important to fix if you play FPS especially when used to linux
iwr -useb https://raw.githubusercontent.com/ballerhoss/Windows-11-Gaming-Performance-Scripts/refs/heads/main/MouseAccelFix.bat -OutFile ./MouseAccelFix.bat && ./MouseAccelFix.bat
this repo also has a lot of performance tweaking scripts if interested
technically for windows 11 but seems to have worked in windows 10
best run in old power shell (ie "Windows Powershell" not "pwsh", "Microsoft Powershell" or "Powershell ISE")
will cause wear on your any key
changes a lot of stuff which you might not want if you plan to use windows for anything other than playing literally just one videogame
requires some inputs namely asking how much ram you have, which gpu vendor (nvidia/amd)
and for thread quantum HEX value
I went with 26
You can run these scripts with:
git clone https://github.com/ballerhoss/Windows-11-Gaming-Performance-Scripts.git
./Windows-11-Gaming-Performance-Scripts/Standard_Install.bat