2015 MacBook Air · MacBookAir7,2

Your MacBook Air.
Ready for Linux.

Install EndeavourOS with GNOME, then add the apps, Mac-inspired dock, and MrDemonWolf branding for this MacBook Air.

GNOME · Wayland · systemd-boot Progress saves in this browser Fresh install erases the disk
Prepare USB, test internet, install, set up PREPTESTINSTALLSET UP

Test the live USB’s internet first. Before partitioning, verify the selected drive is the MacBook Air’s internal SSD.

Your progress

0 steps checked

Continue setup →

Progress stays in this browser. Transfer it to your MacBook Air with a progress file.

1

Get ready

Gather these before turning the Mac off.

Official site
Download balenaEtcher
2

Boot the USB and test internet

Do this in the live session before opening the installer.

MacBook Air → Broadcom Wi-Fi driver → working connection

EndeavourOS offered to install the Wi-Fi driver in the live session. Accepting it made the internal Wi-Fi work on this Mac. Keep a backup network route in case the prompt fails.

  1. Start the Mac while holding Option (⌥). Choose the USB’s EFI entry.
  2. If EndeavourOS offers to install Wi-Fi drivers, accept the prompt.
  3. Open a browser in the live session and load a webpage.
If Wi-Fi still does not work, stop here. Use USB Ethernet or another known-working network route before continuing. iPhone USB tethering may need packages the live USB does not have. Do not erase the disk yet.
3

Install EndeavourOS

Use GNOME as the desktop. This setup keeps GNOME as the configured session.

The simple disk setup

Choose the automatic Erase disk option and enable Encrypt System. The installer creates the boot and system partitions for you. The small boot partition stays readable by Mac firmware; your installed Linux system is encrypted.

Simple install flow: select the internal Apple SSD, choose Erase disk, turn on Encrypt System and save the passphrase, keep systemd-boot, then install. Configure hibernation after installation.
If you see Create, Edit, Delete, or Volume Group buttons

That is Manual partitioning. Go back and choose Erase disk for the Apple SSD instead. You do not need to create partitions or a volume group.

Hibernation can be set up later. Do not make a separate swap partition now. After installation, we can add an encrypted swapfile and configure and test hibernation.

Other installer choices

  • Bootloader: Keep EndeavourOS’s default systemd-boot.
  • Kernel: Keep the regular linux kernel and add the LTS kernel as a fallback.
  • Printing: Select general Printing support (CUPS) for office printers.
  • Packages: Keep Desktop-Base + Common packages and recommended defaults selected; leave GNOME’s EndeavourOS settings enabled and keep Firefox selected temporarily so the guide is available on first boot. Chrome installs early; setup asks about removing Firefox at the end.

GNOME uses Wayland. XWayland lets older X11 apps run inside that desktop.

MrDemonWolf, Inc. branding: ./setup.sh all copies the supplied logo into ~/Pictures, sets your account photo, and installs a separate Plymouth startup theme. The apps step installs EndeavourOS’s systemd-boot helper so the setup can rebuild the encrypted boot images. GDM stays enabled for GNOME. A static wolf logo sits near the bottom of a black splash while the encryption passphrase prompt stays visible; the spinner animation is disabled. systemd-boot’s menu stays text-only, and the Mac firmware picker is unchanged.

This setup keeps GDM enabled so GNOME stays the desktop. Sign in to GNOME before running the full setup.

4

Copy, paste, and run setup

Use GNOME’s built-in terminal app for now; setup installs Ghostty. Run commands as your normal account, not root.

Accepting the live USB’s Broadcom Wi-Fi driver prompt should carry Wi-Fi into the installed system. ./setup.sh apps keeps Arch's broadcom-wl-dkms package installed for this Mac's Broadcom card. It also installs headers for the regular and LTS kernels so the Wi-Fi and camera drivers can build for either one. If Wi-Fi is missing after the first login, connect USB Ethernet or another working network before running the commands below, and keep it available until setup finishes. After reboot, check that Wi-Fi still works.

If Git is missing

sudo pacman -Syu --needed git

Download the setup repo

mkdir -p ~/Developer
cd ~/Developer
git clone https://github.com/nathanialhenniges/linux-setup.git
cd linux-setup

Install Ansible, then check readiness

./setup.sh bootstrap
./setup.sh status

Bootstrap installs Ansible and its pinned pacman support collection. If a command fails, stop and read the message.

Target check: Setup pauses if the OS or Mac model is missing or does not match this laptop. Check the detected values, then type CONTINUE only if you understand the difference. Without an interactive prompt, use --accept-target-warning to acknowledge it. The x86-64, pacman, non-root, and SSH checks still apply.

Install Chrome so this guide is easy to follow

./setup.sh --dry-run chrome
./setup.sh chrome
google-chrome-stable 'https://nathanialhenniges.github.io/linux-setup/' >/dev/null 2>&1 &

This installs Chrome before the rest of setup, then opens this guide in Chrome without holding up the terminal. Review the yay prompt. Each browser keeps its own checkboxes: before running these commands, choose Save progress file here in Firefox, then Load progress file in Chrome. Firefox remains available until the final cleanup question.

Preview the full plan

./setup.sh --dry-run all

Read the plan before continuing. Dry run makes no changes and does not use sudo or the network.

Run the setup

./setup.sh all

Run this inside GNOME. Enter your sudo password once, review the AUR prompts, and let each stage finish. Setup installs your apps, applies the dock and branding, imports the desktop dotfiles, sets zsh as your login shell, and verifies the result. It asks before removing old packages or Firefox. New extensions load at the next GNOME login.

Fix or rerun one step Optional commands, app list, and shortcuts

Install the official ChatGPT app

./setup.sh --dry-run chatgpt-app
./setup.sh chatgpt-app

This installs or updates ChatGPT from OpenAI’s signed Arch repository. The installer asks before a full system upgrade. The all and apps actions install ChatGPT only when it is not already present; rerun this standalone action to update it.

Clean up old setup items

./setup.sh --dry-run cleanup-legacy
./setup.sh cleanup-legacy

Open a GNOME terminal to run this. It clears the old ChatGPT Chrome launcher and dock pin, then offers to remove any known Hyprland packages it finds. Pacman shows the removal list for a separate approval. Personal Hyprland settings remain. The all action performs this cleanup too.

Keep Ghostty as the one terminal

./setup.sh --dry-run cleanup-terminals
./setup.sh cleanup-terminals

This checks a short, reviewed list of extra terminal apps. It asks before offering any found apps to Pacman, which shows its own package and dependency removal list. Ghostty and command-line tools stay installed. The all action includes this cleanup.

Remove the old Hyprland session

./setup.sh --dry-run remove-hyprland
./setup.sh remove-hyprland

Run this from the desktop you are using now, after saving open work. It turns on GNOME’s sign-in screen, then shows the packages and unused dependencies pacman plans to remove. Pacman waits for your approval. Reboot when it finishes and choose GNOME. Your personal configuration files stay in place.

Restore the familiar GNOME login

./setup.sh --dry-run display-manager
./setup.sh display-manager && reboot

Save open work first. This turns off SDDM and makes GNOME’s GDM the login screen after reboot. The laptop reboots only if setup succeeds; if it stops, read the message and fix that first. At the sign-in screen, choose GNOME. You do not need to reinstall Linux.

Give GNOME a familiar Mac feel

./setup.sh --dry-run gnome-dock
./setup.sh gnome-dock

App list: Dock — Files, Chrome, 1Password, Telegram, Discord, Notion, ChatGPT, Cider, VS Code, and Ghostty (Trash is at the end). App grid — Plex, Upscayl, and LibrePods. Chrome shortcuts — Docs, Sheets, Slides, Notion, and Quo. Press ⌘+A to see the app grid. GNOME uses dynamic workspaces: it creates spaces as you need them and removes empty ones. LibrePods starts minimized after login. The dock action saves AppIndicator tray support and Dash to Dock for your next GNOME login; log out and back in, or reboot, to load them. Pair AirPods manually. This pinned version has a reported GNOME/Wayland connection issue; if it exits while connecting, open it from the app grid after login. GNOME uses its built-in dark appearance and left-side window buttons, while the MrDemonWolf wallpaper stays in place. Apple Messages and Reminders do not have native Linux apps in this setup.

Shortcuts · Command key = Super

⌘ + Space
App grid
⌘ + Return
Terminal
⌘ + E
Files
⌘ + Q
Close window
⌘ + F
Fullscreen
⌘ + L
Lock screen
Super + Page Up/Down
Switch workspace
Ctrl + Alt + ←/→
Switch workspace
Ctrl + ⌘ + Space
Switch keyboard layout
Print Screen
Screenshot
⌘ + Shift + S
Screenshot options

⌘ + A also opens the app grid. Brightness and media keys keep their normal GNOME behavior. For the remote Mac, use Chrome Remote Desktop’s full-screen keyboard controls; this setup adds no separate shortcut-passthrough mode.

Replace the Arch boot logo

./setup.sh --dry-run branding
./setup.sh branding && reboot

This selects the MrDemonWolf Plymouth theme and rebuilds the installed boot images. The next boot shows a black splash with the static wolf logo near the bottom and no spinner; the text-only systemd-boot menu stays the same. The laptop reboots only if setup succeeds; if it stops, read the message and fix that first.

Set your account photo

./setup.sh --dry-run profile-picture
./setup.sh profile-picture

This changes only your account photo. Run ./setup.sh apps once first if AccountsService is missing.

Remove Firefox

./setup.sh --dry-run purge-firefox
./setup.sh purge-firefox

At the end of ./setup.sh all, you will be asked whether to remove Firefox and its local profiles, saved logins, bookmarks, cookies, settings, and cache. Chrome installs first. Answer yes to remove Firefox; Google Chrome and its profile are left alone. Close Firefox before confirming. If you skip the prompt, use these commands later to review and retry.

Then reboot:

reboot
5

First login and quick checks

At GDM, choose GNOME. The dock will hold the MacBook Air apps installed by this setup.

Verify the laptop setup

cd ~/Developer/linux-setup
./setup.sh verify

Check the built-in camera

cd ~/Developer/linux-setup
./setup.sh camera

Setup builds the FaceTime HD driver and installs its firmware. After reboot, ./setup.sh camera checks the packages, driver build, and video device. Then open Chrome to meet.google.com, allow camera access, and see whether your picture appears in the preview.

6

Connect to your Mac with Chrome Remote Desktop

This laptop is the client. It does not install a Chrome Remote Desktop host.

This MacBook Air is the client. Chrome Remote Desktop controls how shortcuts reach the remote Mac, so test the Command-key combinations you need in a safe text field.

Open CRD

Google’s Chrome Remote Desktop help

If you only remember three things

  1. 1. Test internet in the live USB before erasing the disk.
  2. 2. Read the dry-run plan before running the full setup.
  3. 3. Test Mac Command shortcuts in a real Chrome Remote Desktop session.