├── .gitignore ├── scripts ├── meta-tasks.ps1 ├── install-vscode-extensions.ps1 ├── install-npm.ps1 ├── install-repos.ps1 ├── install-iis.ps1 └── install-choco.ps1 ├── env └── env-tensorflow.ps1 ├── helpers ├── provision-server.ps1 └── provision-base-machine.ps1 ├── Vagrantfile ├── boxstarter └── setup.ps1 └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.vagrant/* 3 | /.vagrant/machines -------------------------------------------------------------------------------- /scripts/meta-tasks.ps1: -------------------------------------------------------------------------------- 1 | ################################################################################################# 2 | # Random tasks - Used more as a reminder then anything 3 | # 1) Change values in git config section 4 | ################################################################################################# 5 | write-host "Updating git config" 6 | git config --global user.email "your_email@example.com" 7 | git config --global user.name "Billy Everyteen" 8 | write-host "End Updating Git Config . . ." -------------------------------------------------------------------------------- /scripts/install-vscode-extensions.ps1: -------------------------------------------------------------------------------- 1 | ################################################################################################# 2 | # VS Code Extensions 3 | # 1) Remove/Add extenstions 4 | ################################################################################################# 5 | Write-host "VS Code Extensions Started At: $((Get-Date).ToString())" 6 | 7 | write-host "Install .editorconfig . . . " 8 | code --install-extension EditorConfig.editorconfig 9 | write-host "Install Code Spellchecker . . . " 10 | code --install-extension streetsidesoftware.code-spell-checker 11 | 12 | Write-host "S Code Extensions Ended At: $((Get-Date).ToString())" -------------------------------------------------------------------------------- /scripts/install-npm.ps1: -------------------------------------------------------------------------------- 1 | ################################################################################################# 2 | # npm Install 3 | # Additonal packages can be found at https://www.npmjs.com/ 4 | # 1) Remove/Add packages 5 | ################################################################################################# 6 | Write-host "npm Started At: $((Get-Date).ToString())" 7 | 8 | write-host "Install Gulp . . ." 9 | npm rm --global gulp 10 | npm install gulp-cli -g 11 | write-host "END Install Gulp!" 12 | 13 | write-host "Install Bower . . ." 14 | npm install bower -g 15 | write-host "END Install Bower!" 16 | 17 | write-host "Install DefinitelyTyped . . ." 18 | npm install typings -g 19 | write-host "END Install DefinitelyTyped!" 20 | 21 | Write-host "npm Ended At: $((Get-Date).ToString())" 22 | -------------------------------------------------------------------------------- /scripts/install-repos.ps1: -------------------------------------------------------------------------------- 1 | ################################################################################################# 2 | # Pioneer Code Repository Install 3 | ################################################################################################# 4 | 5 | write-host "-------------" 6 | write-host " Pioneer Code" 7 | write-host "-------------" 8 | 9 | write-host "Creating source directory . . ." 10 | 11 | $projectDir = "${env:systemdrive}\source" 12 | If (!(Test-Path $projectDir)) { 13 | New-Item -Path $projectDir -ItemType Directory 14 | } 15 | Set-Location $projectDir 16 | 17 | write-host "END Creating source directory!" 18 | 19 | write-host "Pulling Pioneer Code . . ." 20 | 21 | git clone "https://github.com/PioneerCode/pioneer-blog.git" 22 | git clone "https://github.com/PioneerCode/pioneer-warmer.git" 23 | git clone "https://github.com/PioneerCode/pioneer-console-boilerplate.git" 24 | git clone "https://github.com/PioneerCode/pioneer-pagination.git" 25 | git clone "https://github.com/PioneerCode/pioneer-windows-development-environment.git" 26 | 27 | write-host "END Pulling Pioneer Code" 28 | 29 | Read-Host -Prompt "Press Enter to exit" 30 | -------------------------------------------------------------------------------- /scripts/install-iis.ps1: -------------------------------------------------------------------------------- 1 | ################################################################################################# 2 | # IIS Install 3 | # https://technet.microsoft.com/en-us/library/hh824822.aspx 4 | # 1) Enable/Disable IIS ManagementConsole & Features 5 | # 2) Enable/Disable IIS ASPNET 4.5 (which is actually 4.6) 6 | ################################################################################################# 7 | Write-host "IIS Install started at: $((Get-Date).ToString())" 8 | 9 | $iis = Get-Service W3SVC 10 | if ($iis) 11 | { 12 | write-host "IIS Already Installed!" 13 | return; 14 | } 15 | 16 | write-host "Installing IIS . . . " 17 | dism /online /enable-feature /featurename:IIS-WebServerRole /featurename:IIS-WebServer /featurename:IIS-ManagementConsole /featurename:IIS-ApplicationDevelopment /featurename:IIS-ISAPIExtensions /featurename:IIS-ISAPIFilter /featurename:IIS-CommonHttpFeatures /featurename:IIS-DefaultDocument /featurename:IIS-DirectoryBrowsing /featurename:IIS-HttpErrors /featurename:IIS-StaticContent /featurename:IIS-HealthAndDiagnostics /featurename:IIS-HttpLogging /featurename:IIS-Performance /featurename:IIS-HttpCompressionDynamic /featurename:IIS-HttpCompressionStatic /featurename:IIS-Security /featurename:IIS-RequestFiltering | out-null 18 | write-host "END Installing IIS!" 19 | 20 | write-host "Enable ASP.NET 4.6 . . ." 21 | dism /online /enable-feature /all /featurename:IIS-ASPNET45 22 | write-host "END Installing IIS!" 23 | 24 | Write-host "IIS Install ended at: $((Get-Date).ToString())" 25 | -------------------------------------------------------------------------------- /env/env-tensorflow.ps1: -------------------------------------------------------------------------------- 1 | ################################################################################################# 2 | # ML Env 3 | # Additonal packages can be found at https://chocolatey.org/packages 4 | # 1) Remove/Add packages 5 | ################################################################################################# 6 | Write-host "ML Env At: $((Get-Date).ToString())" 7 | 8 | $ChocoInstallPath = "$($env:SystemDrive)\ProgramData\Chocolatey\bin" 9 | if (!(Test-Path $ChocoInstallPath)) { 10 | write-host "Install Chocolatey . . . " 11 | Invoke-Expression ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) | out-null 12 | write-host "END Installing Chocolatey!" 13 | } else { 14 | write-host "Upgrade Chocolatey . . . " 15 | choco upgrade chocolatey 16 | write-host "END Upgrade Chocolatey!" 17 | } 18 | 19 | chocolatey feature enable -n=allowGlobalConfirmation 20 | 21 | write-host "Install ConEnmu . . . " 22 | cinst -y visualstudiocode | Out-Null 23 | write-host "END Install ConEnmu!" 24 | 25 | write-host "Install ConEnmu . . . " 26 | cinst -y python | Out-Null 27 | write-host "END Install ConEnmu!" 28 | 29 | write-host "Install WinRAR . . . " 30 | cinst -y pip | Out-Null 31 | write-host "END Install WinRAR!" 32 | 33 | # Needed for tensorflow 34 | write-host "Install vcredist140 . . . " 35 | cinst -y vcredist140 | Out-Null 36 | write-host "END Install vcredist140 !" 37 | 38 | chocolatey feature disable -n=allowGlobalConfirmation 39 | 40 | write-host "Install VirtualEnvironmentWrapper . . . " 41 | pip install virtualenvwrapper-win 42 | mkvirtualenv tensorflow 43 | workon tensorflow 44 | write-host "END Install VirtualEnvironmentWrapper!" 45 | 46 | write-host "Install jupyter . . . " 47 | pip install --upgrade pip 48 | pip install jupyter 49 | write-host "Install jupyter . . . " 50 | 51 | write-host "Install pip packagtes . . . " 52 | pip install numpy 53 | pip install --upgrade tensorflow 54 | pip install matplotlib 55 | pip install pillow 56 | write-host "Install pip packagtes . . . " 57 | 58 | Write-host "ML Env At: $((Get-Date).ToString())" -------------------------------------------------------------------------------- /helpers/provision-server.ps1: -------------------------------------------------------------------------------- 1 | ######################################################################################################## 2 | # Base installs for Pioneer server 3 | # 1) Install Chocolatey 4 | # 2) Install Chocolatey packages - Additonal packages can be found at https://chocolatey.org/package 5 | # 6 | ######################################################################################################## 7 | 8 | # Choco Install 9 | Write-host "Choco Started At: $((Get-Date).ToString())" 10 | 11 | $ChocoInstallPath = "$($env:SystemDrive)\ProgramData\Chocolatey\bin" 12 | if (!(Test-Path $ChocoInstallPath)) { 13 | write-host "Install Chocolatey . . . " 14 | Invoke-Expression ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) | out-null 15 | write-host "END Installing Chocolatey!" 16 | } else { 17 | write-host "Upgrade Chocolatey . . . " 18 | choco upgrade chocolatey 19 | write-host "END Upgrade Chocolatey!" 20 | } 21 | 22 | chocolatey feature enable -n=allowGlobalConfirmation 23 | 24 | # Utilites 25 | write-host "Install WinRAR . . . " 26 | cinst -y winrar | Out-Null 27 | write-host "END Install WinRAR!" 28 | 29 | write-host "Install Dropbox . . . " 30 | cinst -y dropbox | Out-Null 31 | write-host "END Install Dropbox!" 32 | 33 | # CI 34 | write-host "Install Octopus Deploy . . . " 35 | cinst -y octopusdeploy | Out-Null 36 | write-host "END Install Octopus Deploy!" 37 | 38 | write-host "Install Octopus Deploy Tentacle . . . " 39 | cinst -y octopusdeploy.tentacle | Out-Null 40 | write-host "END Install Octopus Deploy Tentacle!" 41 | 42 | write-host "Install TeamCity . . . " 43 | cinst -y teamcity | Out-Null 44 | write-host "END Install TeamCity!" 45 | 46 | # Front-end CI 47 | write-host "Install GIT . . . " 48 | cinst -y git.install | Out-Null 49 | write-host "END Install GIT!" 50 | 51 | write-host "Install NodeJs . . . " 52 | cinst -y nodejs.install | Out-Null 53 | write-host "END Install NodeJs!" 54 | 55 | write-host "Install Bower . . . " 56 | npm install -g bower 57 | write-host "END Install Bower!" 58 | 59 | write-host "Install Gulp . . . " 60 | npm install gulp-cli -g 61 | npm install gulp -g 62 | write-host "END Install Gulp!" 63 | 64 | # Fun 65 | write-host "Install Plex Media Server . . . " 66 | cinst -y plexmediaserver | Out-Null 67 | write-host "END Install Plex Media Server!" 68 | 69 | # Database 70 | write-host "Install SQL Managment Studio . . . " 71 | cinst -y sql-server-management-studio | Out-Null 72 | write-host "END Install SQL Managment Studio!" 73 | 74 | chocolatey feature disable -n=allowGlobalConfirmation 75 | 76 | Write-host "Choco Ended At: $((Get-Date).ToString())" 77 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | Vagrant.require_version ">= 1.8.5" 5 | 6 | Vagrant.configure("2") do |config| 7 | config.vm.define "Pioneer Dev" 8 | 9 | # Name of box to install with 10 | config.vm.box = "windows_10_hyperv" 11 | # config.vm.box = "windows_10_virtualbox" 12 | # config.vm.box = "windows_10_vmware" 13 | 14 | # Communicator type 15 | config.vm.communicator = "winrm" 16 | 17 | # Guest OS 18 | config.vm.guest = :windows 19 | config.windows.halt_timeout = 15 20 | 21 | # Config networks on guest. 22 | config.vm.network :forwarded_port, guest: 3389, host: 3389, id: "rdp", auto_correct: true 23 | config.vm.network :forwarded_port, guest: 22, host: 2222, id: "ssh", auto_correct: true 24 | 25 | # Admin user name and password 26 | config.winrm.username = "vagrant" 27 | config.winrm.password = "vagrant" 28 | 29 | # Hyperv configuration 30 | config.vm.provider :hyperv do |h| 31 | h.vmname = "pioneer-dev" 32 | h.cpus = 2 33 | h.memory = 12288 34 | end 35 | 36 | # VirutalBox configuration 37 | config.vm.provider :virtualbox do |vb, override| 38 | vb.gui = true 39 | vb.cpus = 2 40 | vb.memory = 12288 41 | vb.customize ["modifyvm", :id, "--vram", "128"] 42 | vb.customize ["setextradata", "global", "GUI/SuppressMessages", "all" ] 43 | vb.customize ["modifyvm", :id, "--clipboard", "bidirectional"] 44 | vb.customize ["modifyvm", :id, "--draganddrop", "bidirectional"] 45 | end 46 | 47 | # VMWare Workstation configuration 48 | config.vm.provider :vmware_workstation do |v, override| 49 | v.gui = true 50 | v.vmx["memsize"] = 12288 51 | v.vmx["numvcpus"] = 2 52 | v.vmx['displayname'] = "Pioneer Dev" 53 | v.vmx["ethernet0.virtualDev"] = "vmxnet3" 54 | v.vmx["RemoteDisplay.vnc.enabled"] = "false" 55 | v.vmx["RemoteDisplay.vnc.port"] = "5900" 56 | v.vmx["scsi0.virtualDev"] = "lsisas1068" 57 | end 58 | 59 | # VMWare Fusion configuration 60 | config.vm.provider :vmware_fusion do |v, override| 61 | #v.gui = true 62 | v.vmx["memsize"] = "12288" 63 | v.vmx["numvcpus"] = "2" 64 | v.vmx["ethernet0.virtualDev"] = "vmxnet3" 65 | v.vmx["RemoteDisplay.vnc.enabled"] = "false" 66 | v.vmx["RemoteDisplay.vnc.port"] = "5900" 67 | v.vmx["scsi0.virtualDev"] = "lsisas1068"s 68 | end 69 | 70 | # Execute Provision 71 | 72 | # Move scripts to documents folder and install when ready 73 | config.vm.provision "file", source: "scripts", destination: "scripts" 74 | 75 | # Install on Up 76 | config.vm.provision "shell" do |s| 77 | s.path = "scripts/install-iis.ps1" 78 | end 79 | config.vm.provision "shell" do |s| 80 | s.path = "scripts/install-choco.ps1" 81 | end 82 | config.vm.provision "shell" do |s| 83 | s.path = "scripts/install-npm.ps1" 84 | end 85 | config.vm.provision "shell" do |s| 86 | s.path = "scripts/install-vscode-extensions.ps1" 87 | end 88 | end 89 | -------------------------------------------------------------------------------- /helpers/provision-base-machine.ps1: -------------------------------------------------------------------------------- 1 | ######################################################################################################## 2 | # Setup your host machine with proper toolilng to start creating Vagrant VM's 3 | # 1) Install Chocolatey 4 | # 2) Install Chocolatey packages - Additonal packages can be found at https://chocolatey.org/package 5 | # 3) Install base repo for Vagrant 6 | # 7 | # Consider creating a box-starter script 8 | ######################################################################################################## 9 | 10 | # Enviroment Setup 11 | Write-host "Enviroment Started At: $((Get-Date).ToString())" 12 | 13 | $projectDir = "${env:systemdrive}\source" 14 | If (!(Test-Path $projectDir)) { 15 | New-Item -Path $projectDir -ItemType Directory 16 | } 17 | 18 | Set-Location $projectDir 19 | 20 | Write-host "Enviroment Ended At: $((Get-Date).ToString())" 21 | 22 | # Choco Install 23 | Write-host "Choco Started At: $((Get-Date).ToString())" 24 | 25 | $ChocoInstallPath = "$($env:SystemDrive)\ProgramData\Chocolatey\bin" 26 | if (!(Test-Path $ChocoInstallPath)) { 27 | write-host "Install Chocolatey . . . " 28 | Invoke-Expression ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) | out-null 29 | write-host "END Installing Chocolatey!" 30 | } else { 31 | write-host "Upgrade Chocolatey . . . " 32 | choco upgrade chocolatey 33 | write-host "END Upgrade Chocolatey!" 34 | } 35 | 36 | chocolatey feature enable -n=allowGlobalConfirmation 37 | 38 | write-host "Install WinRAR . . . " 39 | cinst -y winrar | Out-Null 40 | write-host "END Install WinRAR!" 41 | 42 | write-host "Install Chrome . . . " 43 | cinst -y GoogleChrome | Out-Null 44 | write-host "END Install Chrome!" 45 | 46 | write-host "Install CCleaaner . . . " 47 | cinst -y ccleaner | Out-Null 48 | write-host "END Install CCleaner!" 49 | 50 | write-host "Install Dropbox . . . " 51 | cinst -y dropbox | Out-Null 52 | write-host "END Install Dropbox!" 53 | 54 | write-host "Install UTorrent . . . " 55 | cinst -y utorrent | Out-Null 56 | write-host "END Install UTorrent!" 57 | 58 | write-host "Install GIT . . . " 59 | cinst -y git.install | Out-Null 60 | write-host "END Install GIT!" 61 | 62 | write-host "Install Visual Studio Code . . . " 63 | cinst -y visualstudiocode | Out-Null 64 | write-host "END Install Visual Studio Code!" 65 | 66 | write-host "Install VirtualBox . . . " 67 | cinst -y vagrant Out-Null 68 | write-host "END Install VirtualBox!" 69 | 70 | write-host "Install Vagrant . . . " 71 | cinst -y vagrant | Out-Null 72 | write-host "END Install Vagrant!" 73 | 74 | chocolatey feature disable -n=allowGlobalConfirmation 75 | 76 | Write-host "Choco Ended At: $((Get-Date).ToString())" 77 | 78 | # Repo install 79 | Write-host "Repo Started At: $((Get-Date).ToString())" 80 | 81 | $projectDir = "$($projectDir)\pioneer" 82 | If (!(Test-Path $projectDir)) { 83 | New-Item -Path $projectDir -ItemType Directory 84 | } 85 | Set-Location $projectDir 86 | git clone "https://github.com/PioneerCode/pioneer-windows-development-environment.git" 87 | 88 | Write-host "Repo Ended At: $((Get-Date).ToString())" 89 | -------------------------------------------------------------------------------- /boxstarter/setup.ps1: -------------------------------------------------------------------------------- 1 | #------------------ 2 | # Windows Settings 3 | #------------------ 4 | 5 | Disable-BingSearch 6 | Disable-GameBarTips 7 | 8 | Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrives -EnableShowFileExtensions 9 | Set-TaskbarOptions -Size Small -Dock Bottom -Combine Always -Lock 10 | 11 | #---------------- 12 | # Choco Installs 13 | #---------------- 14 | 15 | cinst -y Microsoft-Hyper-V-All -source windowsFeatures 16 | cinst -y winrar 17 | cinst -y 7zip 18 | cinst -y GoogleChrome 19 | cinst -y firefox 20 | cinst -y git.install 21 | cinst -y nodejs.install 22 | cinst -y ccleaner 23 | cinst -y visualstudio2017enterprise 24 | cinst -y resharper 25 | 26 | cinst -y visualstudiocode 27 | cinst -y vscode-tslint 28 | cinst -y vscode-powershell 29 | cinst -y vscode-editorconfig 30 | cinst -y vscode-gitignore 31 | cinst -y vscode-editorconfig 32 | 33 | cinst -y dotnetcore-sdk 34 | 35 | #---------------- 36 | # VSCode ext 37 | #---------------- 38 | code --install-extension streetsidesoftware.code-spell-checker 39 | code --install-extension streetsidesoftware.michelemelluso.code-beautifier 40 | code --install-extension streetsidesoftware.michelemelluso.donjayamanne.githistor 41 | code --install-extension ms-vsliveshare.vsliveshare 42 | 43 | #--------------- 44 | # VS workloads 45 | #--------------- 46 | 47 | # Set-Location "C:\Windows.old\Users\vagrant\AppData\Local\Temp\chocolatey\visualstudio2017enterprise\15.7.3.0" 48 | # .\vs_enterprise.exe update --add Microsoft.VisualStudio.Workload.CoreEditor --add Microsoft.VisualStudio.Workload.NetCrossPlat --add Microsoft.VisualStudio.Workload.NetWeb --add Microsoft.VisualStudio.Workload.NetCoreTools --add Microsoft.VisualStudio.Workload.Data --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise" 49 | 50 | 51 | #----------------------- 52 | # Privacy Settings 53 | #----------------------- 54 | 55 | # Privacy: Let apps use my advertising ID: Disable 56 | Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Type DWord -Value 0 57 | # To Restore: 58 | #Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Type DWord -Value 1 59 | # Privacy: SmartScreen Filter for Store Apps: Disable 60 | Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Name EnableWebContentEvaluation -Type DWord -Value 0 61 | # To Restore: 62 | #Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Name EnableWebContentEvaluation -Type DWord -Value 1 63 | 64 | # WiFi Sense: HotSpot Sharing: Disable 65 | Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Name value -Type DWord -Value 0 66 | # WiFi Sense: Shared HotSpot Auto-Connect: Disable 67 | Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots -Name value -Type DWord -Value 0 68 | 69 | # Start Menu: Disable Bing Search Results 70 | Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search -Name BingSearchEnabled -Type DWord -Value 0 71 | # To Restore (Enabled): 72 | # Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Search -Name BingSearchEnabled -Type DWord -Value 1 73 | 74 | # Start Menu: Disale Cortana (Commented out by default - this is personal preference) 75 | # TODO: Figure this out - need another VM to test, mine's already disabled via domain, etc. 76 | 77 | # Disable Telemetry (requires a reboot to take effect) 78 | Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection -Name AllowTelemetry -Type DWord -Value 0 79 | Get-Service DiagTrack, Dmwappushservice | Stop-Service | Set-Service -StartupType Disabled 80 | 81 | #------------- 82 | # Remove apps 83 | #------------- 84 | 85 | Get-AppxPackage Microsoft.BingWeather | Remove-AppxPackage 86 | Get-AppxPackage Microsoft.BingNews | Remove-AppxPackage 87 | Get-AppxPackage king.com.CandyCrushSaga | Remove-AppxPackage 88 | Get-AppxPackage Microsoft.BingSports | Remove-AppxPackage 89 | Get-AppxPackage Microsoft.BingFinance | Remove-AppxPackage 90 | Get-AppxPackage Microsoft.XboxApp | Remove-AppxPackage 91 | Get-AppxPackage Microsoft.WindowsPhone | Remove-AppxPackage 92 | Get-AppxPackage Microsoft.MicrosoftSolitaireCollection | Remove-AppxPackage 93 | Get-AppxPackage Microsoft.People | Remove-AppxPackage 94 | Get-AppxPackage Microsoft.ZuneMusic | Remove-AppxPackage 95 | Get-AppxPackage Microsoft.ZuneVideo | Remove-AppxPackage 96 | Get-AppxPackage Microsoft.Office.OneNote | Remove-AppxPackage 97 | Get-AppxPackage Microsoft.Windows.Photos | Remove-AppxPackage 98 | Get-AppxPackage Microsoft.WindowsSoundRecorder | Remove-AppxPackage 99 | Get-AppxPackage microsoft.windowscommunicationsapps | Remove-AppxPackage 100 | Get-AppxPackage Microsoft.SkypeApp | Remove-AppxPackage 101 | 102 | #------------------------------- 103 | # Updates 104 | #------------------------------- 105 | Enable-MicrosoftUpdate 106 | Install-WindowsUpdate -acceptEula 107 | -------------------------------------------------------------------------------- /scripts/install-choco.ps1: -------------------------------------------------------------------------------- 1 | ################################################################################################# 2 | # Choco Install 3 | # Additonal packages can be found at https://chocolatey.org/packages 4 | # 1) Remove/Add packages 5 | ################################################################################################# 6 | Write-host "Choco Started At: $((Get-Date).ToString())" 7 | 8 | $ChocoInstallPath = "$($env:SystemDrive)\ProgramData\Chocolatey\bin" 9 | if (!(Test-Path $ChocoInstallPath)) { 10 | write-host "Install Chocolatey . . . " 11 | Invoke-Expression ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) | out-null 12 | write-host "END Installing Chocolatey!" 13 | } else { 14 | write-host "Upgrade Chocolatey . . . " 15 | choco upgrade chocolatey 16 | write-host "END Upgrade Chocolatey!" 17 | } 18 | 19 | chocolatey feature enable -n=allowGlobalConfirmation 20 | 21 | write-host "Install ConEnmu . . . " 22 | cinst -y conemu | Out-Null 23 | write-host "END Install ConEnmu!" 24 | 25 | write-host "Install WinRAR . . . " 26 | cinst -y winrar | Out-Null 27 | write-host "END Install WinRAR!" 28 | 29 | write-host "Install 7zip . . . " 30 | cinst -y 7zip | Out-Null 31 | write-host "END Install 7zip!" 32 | 33 | write-host "Install Slack . . . " 34 | cinst -y slack | Out-Null 35 | write-host "END Install Slack!" 36 | 37 | write-host "Install Chrome . . . " 38 | cinst -y GoogleChrome | Out-Null 39 | write-host "END Install Chrome!" 40 | 41 | write-host "Install Firefox . . . " 42 | cinst -y firefox | Out-Null 43 | write-host "END Install Firefox!" 44 | 45 | write-host "Install GIT . . . " 46 | cinst -y git.install | Out-Null 47 | write-host "END Install GIT!" 48 | 49 | write-host "Install NodeJs . . . " 50 | cinst -y nodejs.install | Out-Null 51 | write-host "END Install NodeJs!" 52 | 53 | write-host "Install Yarn . . . " 54 | cinst -y yarn | Out-Null 55 | write-host "END Install Yarn!" 56 | 57 | write-host "Install Redis . . . " 58 | cinst -y redis | Out-Null 59 | write-host "END Install Redis!" 60 | 61 | write-host "Install Redis Desktop Manager . . . " 62 | cinst -y redis-desktop-manager | Out-Null 63 | write-host "END Install Redis Desktop Manager!" 64 | 65 | write-host "Install Visual Studio Code . . . " 66 | cinst -y visualstudiocode | Out-Null 67 | write-host "END Install Visual Studio Code!" 68 | 69 | write-host "Install Stackify Prefix . . ." 70 | cinst -y prefix | Out-Null 71 | write-host "END Install Stackify Prefix!" 72 | 73 | write-host "Install FileZilla . . ." 74 | cinst -y filezilla | Out-Null 75 | write-host "END Install FileZilla!" 76 | 77 | write-host "Install CCleaaner . . . " 78 | cinst -y ccleaner | Out-Null 79 | write-host "END Install CCleaner!" 80 | 81 | write-host "Install Dropbox . . . " 82 | cinst -y dropbox | Out-Null 83 | write-host "END Install Dropbox!" 84 | 85 | write-host "Install Web Api CMD . . . " 86 | cinst -y webpicommandline | Out-Null 87 | write-host "END Install Install Web Api CMD!" 88 | 89 | write-host "Install Url Rewrite and ARR . . ." 90 | $iis = Get-Service W3SVC 91 | if ($iis) 92 | { 93 | $webPiProducts = @('UrlRewrite2', 'ARRv3_0') 94 | WebPICMD /Install /Products:"$($webPiProducts -join ',')" /AcceptEULA | out-null 95 | } 96 | write-host "END Install Url Rewrite and ARR . . ." 97 | 98 | # write-host "Install Visual Studio 2015 Enterprise . . ." 99 | # cinst -y visualstudio2015enterprise | Out-Null 100 | # write-host "END Install Visual Studio 2015" 101 | 102 | # write-host "Install Visual Studio 2015 Professional . . ." 103 | # cinst -y visualstudio2015professional | Out-Null 104 | # write-host "END Install Visual Studio 2015 Professional" 105 | 106 | # write-host "Install Visual Studio 2015 Community . . ." 107 | # cinst -y visualstudio2015community | Out-Null 108 | # write-host "END Install Visual Studio 2015 Community" 109 | 110 | write-host "Install Visual Studio 2017 Enterprise . . ." 111 | cinst -y visualstudio2017enterprise | Out-Null 112 | write-host "END Install Visual Studio 2017" 113 | 114 | # write-host "Install Visual Studio 2017 Professional . . ." 115 | # cinst -y visualstudio2015professional | Out-Null 116 | # write-host "END Install Visual Studio 2017 Professional" 117 | 118 | # write-host "Install Visual Studio 2017 Community . . ." 119 | # cinst -y visualstudio2015community | Out-Null 120 | # write-host "END Install Visual Studio 2017 Community" 121 | 122 | write-host "Install ReSharper . . . " 123 | cinst -y resharper | Out-Null 124 | write-host "END Install ReSharper!" 125 | 126 | # write-host "Install SQL Express 2016 . . . " 127 | # cinst -y sql-server-express | Out-Null 128 | # write-host "END Install SQL Express 2016!" 129 | 130 | # write-host "Install SQL Server Management Studio . . . " 131 | # cinst -y sql-server-management-studio | Out-Null 132 | # write-host "END Install SQL Server Management Studio!" 133 | 134 | chocolatey feature disable -n=allowGlobalConfirmation 135 | 136 | Write-host "Choco Ended At: $((Get-Date).ToString())" 137 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pioneer Code Windows Development Environment With [Packer](https://www.packer.io), [Vagrant](https://www.vagrantup.com/), and [Chocolatey](https://chocolatey.org/) 2 | 3 | ## Overview 4 | 5 | A general development environment for Windows. It is also worth noting that [I](https://github.com/chad-ramos) use this on a daily basis, including on the job. 6 | 7 | ### Who is this for? 8 | 9 | * Tired of messing up your PC with outdated assets that degrade over time? 10 | * Tired of the amount of time it takes for you to set up a new dev environment? 11 | * Prefer some modern-day comforts such as configurable, reproducible and portable environments. 12 | 13 | If you answered yes to any of these questions, then this workflow might be for you. 14 | 15 | ## Setup 16 | 17 | On your local machine, run the following from an elevated command prompt. Do not run these commands from a PowerShell prompt. 18 | 19 | Install Chocolatey 20 | ```cmd 21 | @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin 22 | ``` 23 | 24 | Install Vagrant 25 | ```bash 26 | cinst vagrant -y 27 | ``` 28 | 29 | Install Git 30 | ```bash 31 | cinst git.install -y 32 | ``` 33 | ### Virtualization 34 | 35 | #### VirtualBox 36 | **Free** - You need to install this even if you plan on using [VMware Workstation](https://www.vmware.com/products/workstation) 37 | ```bash 38 | cinst virtualbox -y 39 | ``` 40 | 41 | #### VMWare 42 | **Not Free** - VirtualBox works great. If you prefer [VMware Workstation](https://www.vmware.com/products/workstation), you also need to secure the [Vagrant + VMware](https://www.vagrantup.com/vmware/) plugin. 43 | 44 | ```bash 45 | cinst vmwareworkstation -y 46 | ``` 47 | 48 | Clone repo. 49 | 50 | ```bash 51 | git clone https://github.com/PioneerCode/pioneer-windows-development-environment.git 52 | ``` 53 | 54 | ## Vagrant Box 55 | 56 | [Vagrant](https://www.vagrantup.com/) requires [Boxes](https://www.vagrantup.com/docs/boxes.html). If you don't already have a Windows Box, there are a few different ways you can get one. 57 | 58 | * Make your own from scratch. 59 | * There are plenty of tutorials available [online](http://lmgtfy.com/?q=vagrant%2C+create+a+windows+box). 60 | * Make your own using [Packer](https://www.packer.io/intro/getting-started/vagrant.html). 61 | * [Packer](https://www.packer.io/intro/getting-started/vagrant.html) is widely used and made by the same people who make Vagrant. 62 | * [Joe Fitzgerald's](https://twitter.com/joefitzgerald?lang=en) [repo](https://github.com/joefitzgerald/packer-windows) is highly recommended and takes a lot of guess-work out of the process. 63 | * It is highly recommended that you build your Windows boxes with **winrm** instead of **ssh**. Long story short, this solves a lot of know issues with Vagrant and Windows communicating with each other. 64 | * That being said, if you are using packer to build your box and more specifically [Joe Fitzgerald's](https://twitter.com/joefitzgerald?lang=en) [repo](https://github.com/joefitzgerald/packer-windows), I recommend you use the branch that has the necessary adjustments to implement winrm. 65 | * [jg/switch-to-winrm](https://github.com/joefitzgerald/packer-windows/tree/jf/switch-to-winrm) 66 | * Use one that is available from the [community](https://atlas.hashicorp.com/boxes/search). 67 | 68 | Once you have secured your box, navigate to it. 69 | ```bash 70 | cd {path-to-box} 71 | ``` 72 | 73 | Add your Box to Vagrant 74 | ```bash 75 | vagrant box add {name-of-box} {path-to-box.box} 76 | ``` 77 | 78 | Verify your Box is in Vagrant 79 | ```bash 80 | vagrant box list 81 | ``` 82 | 83 | ## Vagrantfile 84 | 85 | In the pioneer-windows-development-environment repo, there is a file called [Vagrantfile](https://www.vagrantup.com/docs/vagrantfile/). Open it up and ensure the following line matches the name you provided above. 86 | ```ruby 87 | config.vm.box = {name-of-box} 88 | ``` 89 | ## Provision 90 | Depending on what you want to be installed coming out of the gates, you might want to take a quick look at the provision scripts located in the [scripts folder](https://github.com/PioneerCode/pioneer-windows-development-environment/tree/master/scripts). Most of what is needed for our entire stack is already configured inside these files. That being said, you might have some personal preferences. Open each up to take a quick look and make any adjustments you see fit. 91 | 92 | Typically, you would want to at least open up **install-programs.ps1** and select the appropriate version of Visual Studio to be installed. As a default, Visual Studio 2017 Enterprise edition is provisioned. 93 | 94 | ### When to run scripts 95 | Some people will want to run scripts as provisions of ```vagrant up```, others might want to move the script files to their new VM and run them at will. By default, the [Vagrantfile](https://www.vagrantup.com/docs/vagrantfile/) is set to run a few scripts that I know I will always need to be run. If you prefer, you can comment those provision out and uncomment the "file" provision. The "file" provision will instead move the scripts to the ```c:\users\vagrant\documents\script```. This will allow you to run them whenever you see fit. 96 | 97 | ## Run 98 | Depending on your environment, run one of the following. Default == VirtualBox. 99 | 100 | ```bash 101 | vagrant up 102 | ``` 103 | ```bash 104 | vagrant up --provider vmware_workstation 105 | ``` 106 | ```bash 107 | vagrant up --provider vmware_fusion 108 | ``` 109 | ```bash 110 | vagrant up --provider hyperv 111 | ``` 112 | 113 | This will configure and create, if not already done, a guest machine for you. Depending on what you are installing, this will take anywhere from a minute (empty guest) to about 30 mins (default provisions) to complete. 114 | 115 | ## Know Issues 116 | * SQL Server Managemnt Studio might not install. 117 | * Sometimes need to re-run ```cinst -y sql-server-management-studio``` after the initial provision. 118 | --------------------------------------------------------------------------------