After setting up your account on windows, the first thing you should do is
Click This Link or run this command
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; . { iwr -useb https://boxstarter.org/bootstrapper.ps1 } | iex; Get-Boxstarter -Force; Install-BoxstarterPackage -PackageName https://gist.githubusercontent.com/zenware/02c838b73e98b8f3f45c5ed027da9c39/raw/boxstarter.ps1 -DisableReboots
y'know I just need to reinstall windows on VMs or a personal machine from time to time. apparently often enough to make a big fuss about it.
We use Boxstarter as the init library, and anypackage as a universal package manager. Boxstarter provides a set of utilities that are fundamentally built around 100% interrupt free Windows Environment Installations. I do prefer the fewest possible interrupts, but I don't actually care about it having 0. I just want it to be more convenient.
Use-case | One-Click Link | Single Command |
---|---|---|
Base System | data2 | data3 |
Development | data12 | data13 |
Streaming | data12 | data13 |
Productivity | data12 | data13 |
Audio | data12 | data13 |
Gaming | data12 | data13 |
Is some of the audio stuff "base system" things?
If neccessary %appdata%\Microsoft\Windows\Start Menu\Programs
controls how your start menu looks
Additionally C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
is startup programs for all users
And for finer control over the programs that launch at startup you can use the registry editor on
HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved
HKCU:Software\Microsoft\Windows\CurrentVersion\Explorer\StartupApproved
$credential = Get-Credential -UserName $Env:USERNAME
Start-Process -FilePath pwsh.exe -ArgumentList '-noprofile' -Credential $credential -Wait
- Consider Chocolatey Non-Admin Install (https://docs.chocolatey.org/en-us/choco/setup#non-administrative-install)
- Explicitly Test/Enable TLS1.2 in pwsh (https://docs.chocolatey.org/en-us/choco/setup#additional-considerations)
- Explicitylu Enable TLS1.2 for single-command setup
- Solution for installing packages from the microsoft store
- Create Usecase-Specific Versions (Gaming, Productivity, Audio Production, etc.)
- Single Command
- Review comments for accuract
- Review package params and make good choices
- Figure out why Set-BoxstarterTaskbarOptions isn't an available cmdlet in my version, which should be the latest
- Find packages that aren't available on chocolatey and do something about that
- Install Developer tools with
scoop
instead of chocolatey, for isolation
- Get a "/NoDesktopIcon" option into all of these packages.
- Integrate some "de-bloat" process
- Automate disabling the windows search index and replacing it with everything
- Write a script that compares Chocolatey Installed packages to Packages that are on the system? Why?
Why do I install these on all my machines, what do I want to do, no matter what computer I'm at?
- Chrome
- Bitwarden
- Discord
- VSCode
There's really only a few options here
- Add some automated download-and-run capabilities to the script and a list of links.
- Just maintain a list of links and manually download and run them
- Actually maintain a collection of chocolatey packages for my needs
Something I should do on this front is write a script that checks what packages are installed on the system and compares them to the packages installed by chocolatey, so that I can more easily determine what they are and update this.
The options for this have changed, there are now multiple package managers, including several developed at microsoft. I should use a combination of Chocolatey, Scoop, WinGet, and perhaps vcpkg.
The following are personal preferences.
If a tool is available as a signed Appx in the Microsoft store, probably I should grab it with
Add-AppxPackage
or perhaps winget
If winget does that sort of thing?
example pkgs:
- Discord
- Slack
Otherwise I should prefer Scoop, because it has two core premises I'm fond of.
- Don't need admin rights
- Isolate packages to $user/scoop Isolation and not requiring admin rights is :chefskiss:
Scoop is sort of intended for cli developer tools, so I should mostly prefer it for those use-cases.
The package management landscape has gotten a bit more complex since I last investigated, and there's OneGet by microsoft which came and went -- it supports multiple providers and offers a winget like API. And the continually developed community installer anypackage
Anypackage actually offers the ability to configure package priorities albeit a bit awkwardly. But that's what I'm gonna use to unify the scoop/winget/choco/etc. situation.
# During Scoop installs
Add-MpPreference -ExclusionPath "$($env:programdata)\scoop", "$($env:scoop)"
# After Scoop installs are done.
Remove-MpPreference -ExclusionPath "$($env:programdata)\scoop", "$($env:scoop)"
- Backblaze Backups
- Battle.net
- Glasswire (Maybe some other similar Firewall, -- portmaster/safing)
- Zeal (Documentation Browser)
- ZimWiki
- Zoom
- Signal
- RescueTime
- PowerToys?
- Anki (anki)
- Amazon Workspaces (amazon-workspaces)
- Logitech GHub (lghub)
- NZXT CAM (nzxt or nzxt-cam) That said, nzxt cam wants me to log in, and I don't want to. So I should review and see if I actually need this? And further, the answer is actually I don't This is a system specific tool...
- Tailscale Consider this: https://github.com/remind101/assume-role
- https://chocolatey.org/docs/installation
- https://boxstarter.org/installboxstarter
- https://boxstarter.org/weblauncher
- https://boxstarter.org/winconfig
- https://joshuachini.com/2017/10/27/automated-setup-of-a-windows-environment-using-boxstarter-and-powershell/
- https://github.com/microsoft/windows-dev-box-setup-scripts
- https://gist.github.com/Staggerlee011/795f295ae7650d463b8c36e9b7cfddbc
- https://gist.github.com/mikepruett3/7ca6518051383ee14f9cf8ae63ba18a7
- https://learn.microsoft.com/en-us/mem/configmgr/osd/understand/introduction-to-operating-system-deployment
- https://nodachisoft.com/common/en/article/en000009/
- https://ttu.github.io/use-chocolatey-to-install-apps-windows-dev-machine/https://ttu.github.io/use-chocolatey-to-install-apps-windows-dev-machine/
- https://docs.chocolatey.org/en-us/choco/commands/#scripting-integration-best-practices-style-guide