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?? ::: spoiler 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. ::: spoiler 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 ::: spoiler 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 ::: spoiler 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 ::: spoiler 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 ## Make the clock show the actual time can use these commands in sequence >net stop w32time > >w32tm /unregister > >w32tm /register > >net start w32time > >w32tm /resync /nowait or copypasta them in a text file with the .ps1 extension and run it as a powershell script to run it as a chron job use >Start-Process taskschd.msc Use the gui to create a task that starts your script on logon. After you’ve made the task open it’s properties and ensure you check the run with highest privileges box.


Some of this seems like wasted effort. If you install a game on steam and it requires redistributables they just install those for you.
not really? people need to know how to use WINE/PROTON tools to make they shit work
he’s on windows