For someone with a lot of free time to tinker with tech, Apple feels kinda meh nowadays. Don’t get me wrong, I think the technical innovations that allow the M Series chips to be this ridiculously powerful, battery efficient, silent, and cool is nothing short of impressive. The iPhone is also an incredibly well built product with an amazing camera, crisp Facetime calls, and great media playback. The extreme multi-tenancy of the FoundationDB-backed iCloud is an unsung engineering feat. Also, the seamless iCloud sync and backups will never get in the way of your 12hr+ doomscroll session…
… never get in the way of your 12hr+ doomscroll session.
And here’s where the problem begins. Despite Apple trying to convince us that Macs really are the tool for the creator, I recently felt that Apple products have become yet another portal to endless consumption, rather than experimentation, and a way to lock down compute behind proprietary code and opaque interfaces.
Instead of encouraging tinkering, I found these devices to be more of a vehicle to drive slop into your eyeballs.
Everything works well in terms of syncing, backups, and inter-device communication. As soon as you want to tinker with anything though, you’re met with a hostile, finger-wagging attitude of “no, we are bestowing the best UX onto you, accept it, you uneducated peasant”.
Look, I think opinionated design is sometimes really great. I like black as a Python formatter for example, but for something as personal as your phone, I think customisation goes a long way. I wanted to reclaim some excitement about the tech I use daily, I wanted to be able to be frustrated that I misconfigured my backups and lost a years’ worth of notes (true story), I wanted to take control of my digital future, and seize the means of computation.
It took me roughly a year to go from a full on iPhone + Watch + Macbook + iPad setup to proudly wearing my Seiko again, and rocking up to the function with my de-Googled GrapheneOS Pixel and booting up into NixOS on a Framework 13. Here’s how I did it…
Why a year? I don’t have that kinda time
Well, simply, life got in the way. You can definitely fast-forward this process, but I don’t encourage you to attempt it in one day. If you try, do let me know how that works for you. I found that I needed multiple days to identify what needs porting where, what needs backing up, what services will replace Apple services.
Life simply got in the way — work meant I needed a working laptop, wanting to touch grass meant I needed a functioning phone. It was the Christmas holidays that finally gave me the time off needed to just get to it.
The most insightful part of this exercise was seeing how intimately tied our devices are to our daily life, even for people that would know that you shouldn’t couple compute and data. From PDFs stored on phones to prove residency, digital-only cards on Apple Wallet, and omfg eSIM, please never ever get an eSIM, it’s the stupidest thing ever, these made your device more of a golden artifact instead of a interchangeable piece of compute you could swap out for another if it broke.
My suggestion is, start with migrating your laptop away from Apple. Treat it as a fun exploratory hobby, start with installing and configuring one package at a time when you have some downtime, then copy documents, set up backups, test them, and when you’re ready, start using the new machine as the main one.
From macOS to Linux
This was probably the easiest and most fun part of the whole process. I did the exact process I suggested above: bought a new Framework 13 and treated setting it up as a fun downtime activity after work. This meant I could take as long as I wanted getting everything set up properly. I ended up going for NixOS as a distro, because I wanted a deterministic way to go from config -> machine state, as well as be able to version control and rollback if I screwed something up, given this was going to be my main personal + work machine.
These are the dotfiles I ended up with.
You don’t need your own server, you have hard disks… and Hetzner
I also tried this move away from Apple about 4 years ago. My approach then was to host my own Nextcloud instance on Linode, and treat my devices as thin-clients that interact with a cloud for documents and media. This experience left me quite disappointed as my Linode costs were many times higher than my monthly iCloud bill at the time, and if I wanted to show a friend a photo from 2018 I would have to wait for about 3-4 minutes for the image to load, by which time, we would have moved away from that subject.
In my case, it took me realising what I actually wanted was a backup solution, rather than a personal cloud, to finally find a good alternative.
Hetzner is what it feels like to chew 5 Gum
Besides offering cheap VPS-es and some ridiculous deals in the Server Auction, Hetnzer smartly realised there’s a market for nerds with disposable incomes that would like to self host but need a place to back up their stuff (3-2-1 anyone?).
Enter their Storage Box offering, which starts at €3.20/mo for 1TB, and grows cheaper the more storage you buy. The box itself is a stripped down Linux machine that has a few basic utilities you can use to set up backups effectively (FTP, SCP, SFTP, WebDAV, …).
I set my backups up with restic, mainly due to its simplicity in getting started. So far so good, no complaints.
In terms of redundancy, for a laptop + phone combo, you can probably rely on your disks until they fail*, at which point you can buy new ones, and restore from your point-in-time recovery system I described above. You don’t have an SLA, your life can tolerate some downtime while you restore. (btw you should totally buy spare RAM and SSDs now rather than later)
* - caveat here, I don’t hoard that much data in terms of digital media, so ymmv
Mobile OS… are we really gonna go to Google?
Escape the devil, just to bump into his mother
The above is a Romanian saying about going from bad to worse. Now, we want to exit Apple’s garden for something better, not worse. As of February 2026, I encourage you to get a Pixel phone, and flash GrapheneOS on it.
GrapheneOS works really well right now, and since you’re most likely coming from Apple’s service offering, you might not have a huge dependency on Google Services to begin with, which will give you a clean slate to work with. If you do need Google Services, Graphene’s sandboxed Google Play Services work great.
I tried (and succeeded) in not needing Google Play Services at all for 99% of my daily workflows, and for the 1% of the ones I do, I set Play Services up in an Android Private Space, where I have the benefit of GrapheneOS tearing Play Services down when the Private Space locks.
Some people report issues with banking apps, though I’ve had no issues with HSBC, Wise, Airwallex and IBKR so far (I think Wise requires the Play Integrity API, and the Private Space workflow above handles that for me).
Since I don’t use Google Play Store, I download all my FOSS apps via Obtainium directly from their Github repository.
Short paren on Play Services
Not using Google Play Services means that you’ll likely not receive notifications from apps that depend on the Firebase Cloud Messaging for push notifications. I didn’t mind putting in some effort at the beginning to set myself up for not needing to use this, so I ended up choosing FOSS apps that implement UnifiedPush: Molly for Signal, Momogram for Telegram and Moshidon for Mastodon.
Also, services that use Google Maps won’t work without Play Services. This was a blessing in disguise, as I finally shifted to OpenStreetMaps, and also broke my habits of ordering Uber & Uber Eats, which besides saving me quite a bit of money, was also something I wanted to do as a political statement, given Uber’s unsavoury practices and also the larger conversation on cloud rent paid to US platforms.
Syncing between devices
I use Syncthing to sync non-photo documents between phone and laptop, and it works amazingly. Obsidian always stays up to date, and I can also easily sync my KeePass password manager database between devices easily. Since KeePass has conflict resolution built in, I can just resolve the conflicts via KeePass and then delete the conflicting files.
For sending documents between laptop and phone, I use KDE Connect, which is miles better than Apple’s proprietary Handoff.
Downloading in bulk from iCloud
You’ll probably end up using icloudpd this to download all your photos from iCloud. For other documents you have in iCloud, I suggest, if your storage allows you, to force your iPhone to download them locally, and then enroll your iPhone in your Syncthing network to sync them between your iPhone and non-Apple laptop. This was probably the most frustrating part of my whole experience, as the syncing from iCloud to device takes ages and the status of the syncing isn’t always super clear.
Email (I’m still on Apple)
I’m quite deeply integrated with Hide my Email and Custom Domains. I use Hey as an interface and forwarder, and plan to move to something else but keep Hey for the UI/UX.
In conclusion, I ended up taking it too far…
After all of the migration was done, I had some extra free time over Christmas. Instead of using my Steam Deck to unwind, I ended up configuring my Steam Deck with Nix too. I flashed Jovian NixOS onto my Steam Deck, and configured Tailscale to start on boot so I could join my mate’s Minecraft server. It was quite fun, and there are some benefits to managing a Steam Deck with NixOS. However, since updating means recompiling the Linux kernel from scratch with the Jovian patches, which usually takes 1-2 hours on a Ryzen AI 300, I’m doubtful it’s worth it.
I wanted to add this final part about the Steam Deck and NixOS not to brag (even though I do brag about it). In the end, even though it took me some time, I did achieve what I started out trying to get to: a tinker-friendly, personal setup.
Thanks for making it this far, I hope you found my journey helpful. As always, feel free to get in contact with me for any questions, or just saying hi. You can reach me on Mastodon or at hello at buduroiu dot com
TL;DR - What I replaced with what
| Apple | Now |
|---|
| Laptop | MacBook Pro M1 | Framework 13 Ryzen AI 300 |
| OS | macOS | NixOS + Hyprland |
| Phone | iPhone 14 Pro Max | GrapheneOS Pixel 10 Pro |
| Photos | iCloud | Syncthing + restic (backups) |
| Documents | iCloud + Apple Office Suite | Syncthing + LibreOffice |
| Watch | Apple Watch | Seiko automatic watch |
| Location sharing | Find My | reitti |
| Messaging | iMessage | Signal / Matrix |
| Passwords | Strongbox Client for KeePass | KeePassXC |
| Backups | iCloud | restic + Hetzner Storage Box |
| Personal Cloud | iCloud | Hetzner Storage Share (Nextcloud) |
| Peripherals | Magic Keyboard + Magic Trackpad | ZSA Voyager |
| Earbuds | Airpods Pro | Airpods Pro + Librepods / Bose QC35 |
| Handoff | Handoff | KDE Connect |