diff options
Diffstat (limited to '.config/powershell')
| -rw-r--r-- | .config/powershell/bootstrap.ps1 | 131 |
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." +} |
