An immutable Fedora GNOME image for the Intel MacBook Air, built on Universal Blue's silverblue-main. Currently tracking Fedora 44.
Instead of layering required packages onto stock Silverblue — which isn't the preferred convention with bootc/rpm-ostree - I created this instead. Along with serving as a playground on bootc - this became my daily driver since early 2026 - so I decided it was worth sharing.
This little project started with the great Universal Blue image-template. The aim was to create a reliable out-of-box Fedora Silverblue experience on my 11-year-old, 11-inch Mac: all drivers included, kept close to stock GNOME, with a particular focus on maximising battery life.
At 50% display brightness with Wi-Fi enabled and no apps open, my machine draws around 4–4.5 W, or roughly 10 hours of battery life (if you aren't doing anything else, of course :P). Not that I use my machine this way, but for reference - with auto-brightness off and brightness at minimum, power usage drops to 3.3–3.5 W! Battery condition, open apps, Wi-Fi usage, peripherals, and exact hardware all contribute.
Important
Thunderbolt is intentionally disabled to save power. If you rely on that port, this image is not for you. I don't use mine, so the multiple watts—and hours—of power savings are worth it].
- A mostly stock Fedora GNOME experience on Universal Blue's
silverblue-main, delivered as a bootc image - Broadcom Wi-Fi from Universal Blue akmods, plus the FaceTime HD driver and firmware extractor, baked in
- PCIe ASPM tuning, firmware compatibility tweaks, and a MacBook Air display wake fix, Automatic PowerTOP tuning, Wi-Fi power saving
- A smaller, hardware-focused initramfs that reduced boot time from ~40 to ~25 seconds on my machine. The initramfs in
silverblue-mainis ~230MB+ whereas this image's initramfs is ~75MB. Since updates occur on restart, I figured the faster boot was worth pursuing. - Mac-like shortcuts provided by the fantastic Toshy project
- A first-run Setup app that optionally installs Toshy, applies Mac style themes to the desktop and Firefox - aswell as restore the GNOME Flatpak apps from Flathub that usually came with Silverblue (Firefox is already included in the image). The setup app can be re-run anytime to remove these additions.
- mbpfan for MacBook fan control
- uupd automatic image and Flatpak updates
- GNOME extensions installed and enabled system-wide: AppIndicator and KStatusNotifierItem Support, Xremap, Vitals, User Themes, Dash to Dock, and the uupd Indicator with restart-required notifications
- WhiteSur GTK, Shell, and GDM styling, selectable WhiteSur icons, WhiteSur cursors, and MacTahoe icons and cursors, optional MacTahoe Firefox CSS, and MacTahoe day/night wallpapers that follow dark mode, with the day image also used by GDM
The image is developed and daily-tested on a 2015 11" MacBook Air (MacBookAir7,1). Its initramfs and power configuration are intentionally tailored to this generation.
These closely related Intel MacBook Airs are reasonable candidates, but are untested unless stated otherwise:
| Model identifier | Apple model | Confidence |
|---|---|---|
MacBookAir7,1 |
11-inch, Early 2015 | Daily-tested target |
MacBookAir7,2 |
13-inch, Early 2015 or 2017 | Closest sibling; likely candidate |
MacBookAir6,1 |
11-inch, Mid 2013 or Early 2014 | Similar generation; untested |
MacBookAir6,2 |
13-inch, Mid 2013 or Early 2014 | Similar generation; untested |
MacBookAir5,1 |
11-inch, Mid 2012 | Earlier related hardware; least certain |
MacBookAir5,2 |
13-inch, Mid 2012 | Earlier related chassis; least certain |
Do not assume that other MacBooks or MacBook Pros are compatible. The trimmed initramfs omits drivers and storage features this specific machine does not need.
If you already run a bootc-managed system, inspect its current state first:
sudo bootc statusThen switch to LinuxBook-Air and reboot into the new deployment:
sudo bootc switch ghcr.io/networkoctopus/linuxbook-air:latest
sudo systemctl rebootAfter rebooting, verify the booted image:
sudo bootc statusThe switch replaces the operating-system image but keeps data in /var, including home directories. Make a backup first. Layered packages or local system changes from a substantially different image may need to be removed before switching.
If the new deployment does not suit your machine, boot the previous deployment from the boot menu or roll back:
sudo bootc rollback
sudo systemctl rebootThe installer ISO is built weekly. Open the Build disk images workflow, select the newest successful scheduled run, and download the artifact from the Artifacts section at the bottom of the run page. Extract the archive to get the Anaconda ISO, then write it to a USB drive with your preferred image writer.
Note: GitHub requires you to be signed in to download workflow artifacts.
Caution
Installing an operating system will erase the selected disk. Back up anything important and carefully confirm the target drive in Anaconda.
The bootc image is rebuilt twice weekly, every Wednesday and Sunday. Manual builds may also appear in the Actions history.
uupd checks for and stages operating-system and Flatpak updates automatically. The panel indicator shows update activity and tells you when a reboot is needed to enter the staged deployment. GNOME Software updates are disabled because uupd handles them.
The image includes a diagnostic script that checks the power configuration and reports tunables that are active, missing, or unexpected:
sudo power-audit.shVery occasionally—roughly once every couple of weeks on the test machine—Wi-Fi may disconnect during a heavy download. Rejoining the network restores it. This appears to be caused by Wi-Fi power saving, which saves around 0.5–0.8 W.
To revert, create a NetworkManager override which MAY help:
sudo nano /etc/NetworkManager/conf.d/wifi-powersave.confAdd and save:
[connection]
wifi.powersave = 2Then apply it:
sudo nmcli connection reload
sudo systemctl restart NetworkManagerThe test machine once failed to return from suspend and required a hard reboot. The cause has not been identified or reproduced reliably.
- Add an option to the Setup app to toggle all power tunings
- Investigate adding a temporary Thunderbolt enable/disable control
Have fun, but there are no warranties. This personal project is shared in the hope that it is useful. It makes deliberate hardware trade-offs, has only been validated on the test machine, and may fail to boot or work correctly elsewhere. Keep backups and know how to select an earlier deployment before experimenting.