Let's answer some questions:
Why are you writing this?
Because some stuff doesn't 'just work' when restoring from an old backup. I was gifted an M1 Mac Mini (thanks, girlfriend!) and tried to set it up with a backup from my Macbook Air. While some things worked, other things went horribly wrong. And going through the process of resetting an M1 Mac product is a pain¹ in the² ass³, so I'm attempting to save you the headache.
But I restored from a backup and mine works fine!
Great! Mine didn't.
Okay, so what do you recommend?
Start from scratch. Yeah, I know. It's not fun. But it doesn't have to be entirely terrible!
- Enable Settings Sync in Visual Studio Code and sync your settings from your current machine
- Save your
.zshrcin a Github Gist or something of the sort.
Once you've got your settings from VS Code on your existing machine synced up, install VS Code on your new machine, enable Settings Sync, and...sync your settings. Easy. All of your extensions will get installed, your settings will be synced, and you'll be set. If you were using a custom font (Fira Code, Dank.sh, Monoid, whatever floats your boat) go and install that. Done.
UPDATE: Visual Studio Code Insiders just released a version compatible with M1 Macs! Link: VS Code ARM64
Once you install iTerm 2, you'll probably want to install Homebrew, Oh My ZSH!, NVM and whatever else. Before doing anything, go to your Applications folder, right-click on iTerm, click 'Get Info', and check the 'Open using Rosetta' option.
Before I did this, I was getting a bunch of undecipherable errors from various command line tools because (presumably) they have compatibility issues with the M1 chip. There are alternative solutions, but I found this to be the easiest to implement and the most out-of-sight-out-of-mind solution. Check the option and don't worry about it. From there you should be able to install all your shell integrations and command line tools with no problem. I was able to install Homebrew and some formulas, NVM, Python 3, and Mac CLI with no issues.
Create or update your
.zshrc file with your existing configuration which you should have uploaded to a Github Gist, and you're set.
Or. At least I was set. 😅 Good luck!