-
Notifications
You must be signed in to change notification settings - Fork 5
/
install-windows.ps1
112 lines (84 loc) · 4.58 KB
/
install-windows.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#Requires -RunAsAdministrator
# Write-Host Set PowerShell Execution Policy
# Write-Host ----------------------------------------
# Set-ExecutionPolicy Unrestricted
Write-Host Configuring NVM
Write-Host ----------------------------------------
$installPath = "C:\Users\Albert\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
}
Write-Host Configuring WSL
wsl --install -d Ubuntu-20.04
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'))
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
Write-Host Configuring Neovim
Write-Host ----------------------------------------
New-Item -ItemType Junction -Force `
-Path "$home\AppData\Local\nvim" `
-Target "$home\.dotfiles\nvim\.config\nvim"
Write-Host Configuring Oh My Posh
Write-Host ----------------------------------------
# Install-Module oh-my-posh -Scope CurrentUser
# Install-Module posh-git -Scope CurrentUser
# [Environment]::SetEnvironmentVariable("Path", $env:Path + ";$env:POSH_PATH", "Machine")
# winget install oh-my-posh
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))
New-Item -ItemType Junction -Force -Path "$home\.omp" -Target "$home\.dotfiles\oh-my-posh\.omp"
Write-Host Configuring PowerShell
Write-Host ----------------------------------------
New-Item -ItemType HardLink -Force `
-Path "$home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1" `
-Target "$home\.dotfiles\PowerShell\Documents\PowerShell\Microsoft.PowerShell_profile.ps1"
Write-Host Install NerdFont
Write-Host ----------------------------------------
# Make sure to install the nerdfont for all users
# https://github.com/ryanoasis/nerd-fonts/releases/download/v2.1.0/CascadiaCode.zip
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\.dotfiles\windows-terminal\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
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