Skip to content

Instantly share code, notes, and snippets.

@sugoidogo
Last active August 16, 2024 02:58
Show Gist options
  • Save sugoidogo/5a42715e6589a836b9692399013d1657 to your computer and use it in GitHub Desktop.
Save sugoidogo/5a42715e6589a836b9692399013d1657 to your computer and use it in GitHub Desktop.
New PC setup script
# irm 'https://gist.githubusercontent.com/sugoidogo/5a42715e6589a836b9692399013d1657/raw/0-setup.ps1' | iex
# allow running local scripts. Question: why is it called -Force when it's really a -NoConfirm?
Set-ExecutionPolicy RemoteSigned -Force
# Disable forced updates
$RegPath="HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
New-Item $RegPath -Force
New-ItemProperty $RegPath AUOptions -PropertyType DWORD -Value 2 -Force
# start windows activation and move over old user folder while this script runs
start-job {
# Note: the site says to use https://get.activated.win, but isn't working at time of writing
irm https://massgrave.dev/get | iex
# I don't have a way to download the latest release of this software automatically,
# so just open their respective download pages
# also sign in to discord so it transfers to the app
$urls="app.discord.com"
$urls+=" github.com/Off-World-Live/obs-spout2-plugin/releases"
$urls+=" loudmax.blogspot.com"
$urls+=" vb-audio.com/Cable/ https://shop.vb-audio.com/en/module/vblicensing/myDownloads"
$urls+=" obsproject.com/forum/resources/audio-monitor.1186"
$urls+=" github.com/Enubia/ghost-chat/releases"
runas /trustlevel:0x20000 "C:\Program Files\Google\Chrome\Application\chrome.exe $urls"
$sourcePath = "\Windows.old$env:HOMEPATH"
$destinationPath = "$env:HOMEPATH"
$sourceFolder = (new-object -com shell.application).NameSpace($sourcePath)
$destinationFolder = (new-object -com shell.application).NameSpace($destinationPath)
$destinationFolder.MoveHere($sourceFolder)
}
# start microsoft store install for windows LTSC
wsreset -i
# ensure profile exists so that chocolatey installer adds ChocolateyProfile module
mkdir $profile
rm $profile
echo $null >> $profile
# https://chocolatey.org/install
irm 'https://community.chocolatey.org/install.ps1' | iex
# every single package seems to show the same prompt for a 'chocolateyInstall.ps1' script
# since this prompt doesn't give you any other information, it's not very useful
choco feature enable -n=allowGlobalConfirmation
# some of these packages need custom flags, so remember that during upgrades
choco feature enable -n=useRememberedArgumentsForUpgrades
# Google Chrome is my primary web browser
# Install this first so we can download files while other packages install
# Note: want to replace this with chromium, need proprietary codec support
choco install googlechrome
# open shell restores the windows 7 style start menu
# requires flag to avoid unwanted extra features
choco install open-shell --params="/StartMenu"
# I use Firefox Dev to test my websites
# prerelease software requires extra flag
choco install firefox-dev --pre
# sudo allows me to elevate a command without a new terminal
# windows 11 has a built-in sudo, but on windows 10 we need the gsudo package
(sudo config --enable normal) -or ($packages+=" gsudo")
# the Link Shell Extention allows me to create filesystem links from Explorer
$packages+=" LinkShellExtension"
# the official GUI for chocolatey
$packages+=" chocolateygui"
# VSCodium is my current code editor, Lapce is my next
$packages+=" vscodium lapce"
# Steam is where I own most of my games
$packages+=" steam"
# GOG Galaxy is my primary launcher
$packages+=" goggalaxy"
# Discord is the primary internet messaging service I use, want to replace
$packages+=" discord"
# OBS Studio is my primary streaming software
$packages+=" obs-studio"
# I use OBS-NDI to send OBS captures over the network
$packages+=" obs-ndi"
# Android Messages allows me to text and call from my PC
$packages+=" android-messages-desktop"
# AnyDesk grants me remote support capabilities
$packages+=" anydesk"
# borderless gaming allows me to add borderless window mode to games without it
$packages+=" borderlessgaming"
# Equalizer APO allows me to apply VSTs to my Windows audio devices
$packages+=" equalizerapo"
# OCCT is a stress testing suite, good for troubleshooting performance issues
$packages+=" occt"
# tailscale is my all-purpose VPN
$packages+=" tailscale"
# WizTree lets me see what's taking up all my storage
$packages+=" wiztree"
# I use ungoogled-chromium to test my websites
# keep this item last since firefox-dev needs an aditional flag
$packages+=" ungoogled-chromium"
# All chocolatey-installable packages have been collected, run the command (this will take a while)
choco install $packages.split(' ');refreshenv
# environment variables which enable google account sync in chromium
#[Environment]::SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_ID", "77185425430.apps.googleusercontent.com", "User")
#[Environment]::SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_SECRET", "OTJgUOQcT7lO7GsGZq2G4IlT", "User")
# ungoogled-chromium doesn't create a start menu shortcut, so do that here
# https://stackoverflow.com/questions/9701840/how-to-create-a-shortcut-using-powershell
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\ungoogled-chromium.lnk")
$Shortcut.TargetPath = "C:\ProgramData\chocolatey\lib\ungoogled-chromium\tools\ungoogled-chromium\chrome.exe"
$Shortcut.Save()
# Symlink the Equalizer APO VSTPlugins folder to a more generic location
New-Item -Path "C:\Program Files\VSTPlugins" -ItemType SymbolicLink -Value "C:\Program Files\EqualizerAPO\VSTPlugins"
# RNNoise is the high-quality noise suppression algorithm used by OBS Studio
invoke-webrequest https://github.com/werman/noise-suppression-for-voice/releases/latest/download/win-rnnoise.zip `
-outfile ~/Downloads/win-rnnoise.zip
expand-archive ~/Downloads/win-rnnoise.zip -destinationpath ~/Downloads -Force
cp ~\Downloads\win-rnnoise\vst\*.dll "C:\Program Files\VSTPlugins\"
# Create an interactive update on login task
# https://learn.microsoft.com/en-us/powershell/module/scheduledtasks/register-scheduledtask?view=windowsserver2019-ps
Register-ScheduledTask -TaskName "Chocolatey Updates" `
-Description "Interactively update all chocolatey packages" `
-Action $(New-ScheduledTaskAction powershell "-c choco upgrade all;pause") `
-Trigger $(New-ScheduledTaskTrigger -AtLogOn) `
-Settings $(New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -RunOnlyIfNetworkAvailable -StartWhenAvailable) `
-RunLevel Highest
# vencord is a discord enhancement
invoke-webrequest https://github.com/Vencord/Installer/releases/latest/download/VencordInstallerCli.exe `
-outfile ~/Downloads/VencordInstallerCli.exe
# first run, install vencord
~/Downloads/VencordInstallerCli.exe -branch stable -install
# second run, install openasar
~/Downloads/VencordInstallerCli.exe -branch stable -install-openasar
# download our EqualizerAPO config
invoke-webrequest https://gist.githubusercontent.com/sugoidogo/5a42715e6589a836b9692399013d1657/raw/config.txt `
-outfile "C:\Program Files\EqualizerAPO\config\config.txt"
# pause before we start opening promps and windows over whatever I'm doing
echo "process all browser pages before continuing"
pause
# I use audio monitor to create a discord-capturable obs monitor with audio
expand-archive ~/Downloads/audio-monitor*.zip -destinationpath "C:\Program Files\obs-studio" -Force
# I use Spout2 for my VTuber
(expand-archive ~/Downloads/OBS_Spout2*.zip -destinationpath "C:\Program Files\obs-studio" -Force) `
-or (~/Downloads/OBS_Spout2*.exe)
# LoudMax allows me to even out my audio volume
expand-archive ~/Downloads/LoudMax*.zip -destinationpath "C:\Program Files\VSTPlugins" -Force
# VBCABLE allows me to do some advanced audio routing
expand-archive ~/Downloads/VBCABLE_Driver*.zip -destinationpath ~/Downloads/VBCABLE -Force
expand-archive ~/Downloads/VBCABLE_A_B_Driver*.zip -destinationpath ~/Downloads -Force
expand-archive ~/Downloads/VBCABLE_A_Driver*.zip -destinationpath ~/Downloads/VBCABLE_A -Force
expand-archive ~/Downloads/VBCABLE_B_Driver*.zip -destinationpath ~/Downloads/VBCABLE_B -Force
~/Downloads/VBCABLE/VBCABLE_Setup_x64.exe
~/Downloads/VBCABLE_A/VBCABLE_Setup_x64.exe
~/Downloads/VBCABLE_B/VBCABLE_Setup_x64.exe
# GhostChat lets me have an on-screen chat overlay
# want to replace with a generic multi-window option
~/Downloads/Ghost-Chat*.exe
# finish microsoft store install for windows LTSC
wsreset -i
Stage: pre-mix
Device: CABLE-A Input VB-Audio Cable A
VSTPlugin: Library LoudMax64.dll Thresh 0 "Large GUI" 0 "ISP Detection" 0 Output 0.75 "Fader Link" 0
Device: CABLE-B Input VB-Audio Cable B
VSTPlugin: Library LoudMax64.dll Thresh 0 "Large GUI" 0 "ISP Detection" 0 Output 1 "Fader Link" 0
Device: CABLE Input VB-Audio Virtual Cable
VSTPlugin: Library LoudMax64.dll Thresh 0 "Large GUI" 0 "ISP Detection" 0 Output 0.5 "Fader Link" 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment