MacBook Air M4 Adventures

Various utilities

Displaying notifications

osascript -e 'display notification "Description" with title "Title"'

OS-level updates

sudo softwareupdate -ia

Open local Nix-Darwin help

darwin-help

Web browsing

Orion Browser by Kagi.

Terminal

Ghostty.

What's down there

The rest of this post documents my 7-day journey in converting to MacOS as a Linux power-user.

Day 1

It's 7PM and I brought the thing from the store. Conversed for a while with an LLM to tell me crucial OS differences and recommended keyboard shortcuts, given a Linux power-user background.

Fired up an update to the latest MacOS version and installed Nix immediately. The recommended multi-user install script worked right out the box, tested with a simple nix-shell -p cowsay.

The next step (as I understood based on my reddit/LLM/Kagi queries) was to install Nix Darwin, so that I can manage system-level MacOS configuration. Used it to install some basic CLI tools like nvim, cargo, btop. Installed XCode Dev Tools along the way as a OS-level popup told me so, nice.

Rust is compiling, Neovim is running, no issues there.

I was unable to configure AstroNvim due to a cryptic error:

Unable to open swap file for "<any path i try to edit>", recovery impossible

On plain Neovim, this simply appears and then I can edit the file. On AstroNvim, the error appears and then it snaps back to the file explorer, preventing me form editing anything. Sometimes it opens the file but shows it as both empty and read-only. I'm assuming that's a permission issue I don't yet understand. Will continue tommorow. Working from VSCode (installed via Nix) and a Vim plugin, that's almost close enough.


Day one UX issues as a convert:

Day 2

Contrary to AstroNvim, Helix works from the get-go, so I switched to it. Configured Home Manager after some initial struggles with how exactly to get the flake format right.

Still unsure how I should install software, global packages namespace or home-manager? I like that home-manager has all the useful options, but I need the global namespace when I use sudo for any of my CLI utilities.

I've been hacking on the thing for around 1 hour, constantly rebuilding nix-darwin and it shows 19 hours of battery life left, crazy!


Day two UX issues as a convert:

I sometimes slip between control/option/command but I'm getting it right most of the time. Faster than I expected. Also, there's no delete key?!

Day 3

Added some shortcuts with make so I don't have to remember new commands. Learned how to use Rectangle, very useful.

Realised I cannot live without zoxide, installed it. Learned how to use normal Nix modules in home-manager configuration.

Getting comfy with Helix, did some productive remote work finally!


Day three UX issues as a convert:

I am really close to remapping the home (~) key back where it should be...

Day 4

Fixed the weirdest issue ever with neovim! This thing has been haunting me for the last 5 days, even making me switch to helix:

E303: Unable to create directory "/Users/wint3rmute/.local/state/nvim/swap" for swap file, recovery impossible: permission denied
E303: Unable to open swap file for "/Users/wint3rmute/code/darwin/flake.nix", recovery impossible
E886: System error while opening ShaDa file /Users/wint3rmute/.local/state/nvim/shada/main.shada for reading: permission denied

It popped up every time I tried to edit any file with neovim and completely broke my AstroNvim setup. It turns out, it is caused by the invalid owner of .local/state/nvim/ directory. What caused invalid permissions? Running neovim as root for the very first time after installation. It caused the directory to be created with only root access, breaking every subsequent attempt to edit a file as non-root.

After removing .local/state/nvim/ and starting neovim again, everything works as intended!

..although I want to switch to Helix now...

Day 5

Day 6

Configured the Orion Browser and started using it. It's a little buggy (especially on long websites), but it gets the job done. The UI is less cluttered than Firefox (even after decluttering Firefox using customisation settings) and does not get in the way.

My application stack is now 90% Orion + Ghostty, plus some minor utility apps & communicators. Feels fresh and comfy at the same time!

Today I found myself reaching for MacOs-specific shortcuts when working on a Linux machine. That's unexpectedly fast development of muscle memory :)

Notes

Check out: