I recently got a new Macbook Pro 14" as my new work laptop so I’ve been busy setting up the machine. It’s a base model with an M1 chip, which I’m particularly looking forward to trying. Having worked with Windows and Arch Linux before, there are some challenges, especially a shift in thinking but overall, I am very surprised to find out most of the stuff works out of the box pretty well.
I’m documenting my process and this will serve as a living document for me to refer to once I’ve updated my setup.
Homebrew
You can’t talk about macOS without Homebrew. It’s the de-facto package manager for macOS and the installation guide works fine for M1 architecture.
Once it’s installed, I’ve also installed some other tools such as bat
, PHP, and Git via brew install
command.
Side note: You can install multiple PHP versions on your machine via brew install [email protected]
, brew install [email protected]
, etc, and use the brew link
/unlink
command to set the default version used in your machine. For example to switch the default version used from 8.1 to 7.4:
|
|
Other applications
Most of the stuff that I use can be either downloaded from their official site, or installed from the App Store, and I haven’t had any compatibility issue with M1 architecture just yet.
Some of the apps that I have:
- 1Password - Work and personal password manager, also installed Chrome’s addon.
- AltTab - Use Windows
alt+tab
feature in macOS. - AppCleaner - Nice to have uninstaller for macOs.
- Authy - Manage all my 2FA.
- Big Weather - A simple weather menu bar app.
- CleanMyDrive 2 - A lightweight drive manager, bonus for menu bar integration.
- Clocker - Useful to have in the menu bar, to see current date and time of my colleagues all over the world.
- Dropzone 4 - A very cool app that lives in your menu bar, and able to handle a lot of things.
- Google Chrome - Web browser of choice.
- Hidden Bar - I originally paid for Vanilla Pro, wished I found this one sooner.
- How Long Left - Pretty useful menu bar app to quickly glance the next event in your calendar.
Insomnia - Beautiful API client with multiple protocols support.I have since use Thunder Client for VS Code- Maccy - Minimal clipboard manager. I bind
⌥
+v
to toggle, similar to the keybinding that I used to have in Archlinux via rofi. LyricsX - Karaoke lyrics 🤘Not that reliable so I decided to remove this- Raycast - Spotlight replacement, pretty good but I haven’t used Alfred so I can’t compare.
- Rectangle - Allows you to move and resize windows, quite a decent replacement for Windows-like features. Not as good as bspwm though.
- Sequel Ace - Database client of choice.
- Slack - Work chat.
- Spark - Awesome email client, calendar included as well.
- Spotify - No explanation is needed.
- SSH Proxy - Some of the client sites require going through a proxy, so this is needed.
- The Unarchiver - Kinda set and forget unarchiver for Mac.
- TopNotch - Magically makes the notch disappear.
- Typewriter - Markdown editor, nothing fancy, get the job done.
- Visual Studio Code - Just started using this after using Sublime Text for the last 9 years, might need a separate post for the setup.
- VLC - Another set and forget media player.
- Zoom - Meeting, meeting, meeting!
Docker
Docker support for M1 architecture has been not much of an issue currently. At work, I’m using Altis Local Server which has been supporting ARM/Apple M1 since v9. For my side projects, I’ve also added support to switch the underlying MySQL engine for my docker-lemp
and haven’t had any issues since.
Terminal Setup
I used Alacritty in Arch Linux but for macOS, I decided to go with iTerm2. It’s good enough to get the job done.
Some pointers:
- I set system-wide hotkey `^`` to quickly show/hide the window.
- I set a Working Directory in my default profile > General.
- I use Github Dark color scheme.
- The window column is set to 140 and row to 30, with no transparency.
- I added the
~/.hushlogin
file to disable last login notification when starting the session.
Oh My Zsh
Since the configuration is OS-agnostic, I copied over my existing configuration from Arch Linux to this machine. My theme of choice is essembeh and I installed several plugins:
- colored-man-pages
- colorize
- command-not-found
- common-aliases
- copydir
- copyfile
- cp
- docker
- dotenv
- extract
- encode64
- gh
- git
- git-prompt
- history
- history-substring-search
- safe-paste
- sudo
- urltools
- wd
Generally, I don’t use any alias-related plugins. I might be in the minority who likes to type in the full command instead of using aliases.
There’s also a useful package called zsh-syntax-highlighting
that provides syntax higlighting as you type.
Other CLI tools
I don’t have many installed. For now, I have:
bat
- Much bettercat
replacement.gh
- Github official CLI.hugo
- Solely for this blog.nvm
- So that I can switch Node version easily between projects.neofetch
- Had to bring this from Arch Linux.
Code Editor
Using VS Code at the moment, after 9 years with Sublime Text. Lots of adjustments need to be made, worthy of a separate post about my whole setup. Probably soon!