aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/powershell/bootstrap.ps1131
1 files changed, 131 insertions, 0 deletions
diff --git a/.config/powershell/bootstrap.ps1 b/.config/powershell/bootstrap.ps1
new file mode 100644
index 0000000..5747214
--- /dev/null
+++ b/.config/powershell/bootstrap.ps1
@@ -0,0 +1,131 @@
+#Requires -RunAsAdministrator
+
+# Write-Host Set PowerShell Execution Policy
+# Write-Host ----------------------------------------
+# Set-ExecutionPolicy Unrestricted
+
+
+# Install NVM
+Write-Host Configuring NVM
+Write-Host ----------------------------------------
+$installPath = "C:\Users\%USERPROFILE%\AppData\Roaming\nvm"
+if (-not (Test-Path -Path $installPath))
+{
+ $nvmUrl = "https://github.com/coreybutler/nvm-windows/releases/latest/download/nvm-setup.zip"
+ $extractPath = "C:\Temp\nvm\"
+ $downloadZipFile = $extractPath + $(Split-Path -Path $nvmUrl -Leaf)
+ mkdir $extractPath
+ Invoke-WebRequest -Uri $nvmUrl -OutFile $downloadZipFile
+ $extractShell = New-Object -ComObject Shell.Application
+ $extractFiles = $extractShell.Namespace($downloadZipFile).Items()
+ $extractShell.NameSpace($extractPath).CopyHere($extractFiles)
+ pushd $extractPath
+ Start-Process .\nvm-setup.exe -Wait
+ popd
+ Read-Host -Prompt "Setup done, now close the command window, and run this script again in a new elevated window. Press any key to continue"
+ Exit
+}
+else
+{
+ Write-Host Detected that NVM is already installed, so now using it to install NodeJS LTS
+ pushd $installPath
+ .\nvm.exe install lts
+ .\nvm.exe use lts
+ popd
+}
+
+
+# WSL
+Write-Host Configuring WSL
+wsl --install -d Ubuntu
+
+
+# Install Chocolatey
+Write-Host Install Chocolatey
+Write-Host ----------------------------------------
+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'))
+
+
+# Install Applications
+Write-Host Install Applications
+Write-Host ----------------------------------------
+choco install ripgrep # https://github.com/BurntSushi/ripgrep
+choco install fd # https://github.com/sharkdp/fd
+choco install sudo # ALLOWS USING sudo IN POWERSHELL!
+choco install win32yank # Neovim clipboard support in WSL, FROM: https://stackoverflow.com/a/67229362/182888
+
+
+# Configure Neovim
+Write-Host Configuring Neovim
+Write-Host ----------------------------------------
+New-Item -ItemType Junction -Force `
+ -Path "$home\AppData\Local\nvim" `
+ -Target "$home\.config\nvim"
+
+
+# Install Windows Terminal
+Write-Host Install Windows Terminal, and configure
+Write-Host ----------------------------------------
+Move-Item -Force "$home\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" "$home\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json.old"
+New-Item -ItemType HardLink -Force `
+ -Path "$home\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json" `
+ -Target "$home\.config\windows-terminal\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
+
+
+# Configure Powershell
+Write-Host Configuring PowerShell
+Write-Host ----------------------------------------
+New-Item -ItemType HardLink -Force `
+ -Path "$home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1" `
+ -Target "$home\.config\powershell\Microsoft.PowerShell_profile.ps1"
+
+
+# Registry Tweaks
+Write-Host Registry Tweaks
+Write-Host ----------------------------------------
+
+# Show hidden files
+Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name Hidden 1
+
+# Show file extensions for known file types
+Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name HideFileExt 0
+
+# Never Combine taskbar buttons when the taskbar is full
+Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name TaskbarGlomLevel -Value 2
+
+# Taskbar small icons
+Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name TaskbarSmallIcons -Value 1
+
+# Set Windows to use UTC time instead of local time for system clock
+Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" -Name RealTimeIsUniversal -Value 1
+
+
+# Function to check if the current session is elevated
+function Test-IsAdmin {
+ $currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
+ $principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
+ return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
+}
+
+# Function to disable the Windows key
+function Disable-WindowsKey {
+ $scancodeMap = @(
+ 0x00000000, 0x00000000, 0x00000003, 0xE05B0000, 0xE05C0000, 0x00000000
+ )
+
+ $binaryValue = New-Object byte[] ($scancodeMap.Length * 4)
+ [System.Buffer]::BlockCopy($scancodeMap, 0, $binaryValue, 0, $binaryValue.Length)
+
+ Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Keyboard Layout" -Name "Scancode Map" -Value $binaryValue
+
+ Write-Output "Windows key has been disabled. Please restart your computer for the changes to take effect."
+}
+
+# Check if running as Administrator and call the function
+if (Test-IsAdmin) {
+ Disable-WindowsKey
+} else {
+ Write-Output "You need to run this script as Administrator to disable the Windows key."
+}