monorepo for Flux Linux, a Linux distro focused on MacBook Neo
  • Python 75.8%
  • Shell 22.7%
  • C 1.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-18 23:05:25 -04:00
.github/workflows Keep validation dependencies lean and explicit [skip ci] 2026-10-18 16:30:08 -04:00
branding Add Flux Linux image and RPM build scaffold 2026-04-20 02:53:08 -04:00
docs docs(neo): record fence-array bottleneck 2026-10-18 19:16:06 -04:00
kiwi Merge main and regenerate repository configuration [skip ci] 2026-10-18 16:15:26 -04:00
packages Add image checks and refine disk image setup 2026-10-16 09:43:36 -04:00
platforms/macbook-neo fix(neo): verify pinned Mesa in RAM payload 2026-10-18 19:36:06 -04:00
rpm Add U-Boot MTP handoff diagnostics and release 8 2026-10-17 12:58:14 -04:00
scripts fix(neo): start guest SMP within boot cluster first 2026-10-18 19:53:03 -04:00
tools/m1n1-mcp Update sessions.py 2026-10-18 23:02:48 -04:00
.gitattributes Bring up Neo trackpad firmware and touch reports 2026-10-16 21:42:33 -04:00
.gitignore Ignore Python bytecode cache files in scripts 2026-10-17 13:58:35 -04:00
README.md Merge main and regenerate repository configuration [skip ci] 2026-10-18 16:15:26 -04:00

Flux Linux

Flux Linux is a Fedora-based desktop remix scaffold. The current KIWI description supports both a live/install ISO and an EFI disk image profile, following Fedora's image description flow.

Layout

kiwi/         KIWI image description, repo definitions, and image config
packages/     Package include and exclude manifests
rpm/          RPM skeletons for Flux identity and default settings
scripts/      Local build and VM test helpers
branding/     Logos, wallpapers, and Plymouth assets

First Build Loop

Install the build tools on the Fedora host:

sudo dnf install kiwi-cli kiwi-systemdeps kiwi-systemdeps-iso-media \
  distribution-gpg-keys createrepo_c rpm-build

Build the live ISO:

./scripts/build-iso.sh

Build the EFI disk image:

./scripts/build-disk.sh

The wrappers build the local Flux RPM repository, regenerate kiwi/generated/flux-packages.xml from the package manifests, and run kiwi-ng system build against kiwi/Flux.kiwi with the selected profile.

If you only want to rebuild from an existing build/localrepo, skip the RPM rebuild:

FLUX_KIWI_BUILD_RPMS=0 ./scripts/build-iso.sh

Use KIWI's isolated boxbuild path when you want the build to run in KIWI's containerized environment:

FLUX_KIWI_ISOLATED=1 ./scripts/build-iso.sh

Boot-test the result:

./scripts/test-in-vm.sh build/Flux-Linux-44-x86_64.iso

The disk image includes Fedora Initial Setup so the first boot can create a regular user account. The installed system also retains the third-party COPR repositories used for Helium Browser, Ghostty, and the CachyOS kernel packages.

Run the local configuration and RPM checks with:

./scripts/check-image.sh
./scripts/build-rpms.sh

CI runs image configuration and Neo wrapper checks separately from RPM builds for pushes to main and pull requests. The RPM workflow can also be started manually and saves build/localrepo/ as the downloadable flux-rpm-repository artifact. CI does not yet build or boot a complete ISO or disk image.

Common Overrides

FLUX_RELEASEVER=44
FLUX_BASEARCH=x86_64
FLUX_RESULTDIR=build
FLUX_ARTIFACT_NAME=
FLUX_KIWI_DIR=kiwi
FLUX_KIWI_PROFILE=Flux-Live
FLUX_KIWI_TYPE=iso
FLUX_KIWI_BUILD_RPMS=1
FLUX_KIWI_CLEAN=1
FLUX_KIWI_ISOLATED=0
FLUX_KIWI_DEBUG=0
FLUX_KIWI_TARGETDIR=build/kiwi-build-flux-live

The default release target is Fedora 44, the latest stable release. Change FLUX_RELEASEVER when you intentionally build against another Fedora release.

./scripts/build-iso.sh sets FLUX_KIWI_PROFILE=Flux-Live and FLUX_KIWI_TYPE=iso. ./scripts/build-disk.sh sets FLUX_KIWI_PROFILE=Flux-Disk and FLUX_KIWI_TYPE=oem. Override either wrapper by exporting different values before running it.

Bootloader Policy

The live ISO uses Fedora/KIWI's GRUB-based live media boot path. Flux v0.1 still targets systemd-boot for installed UEFI systems through the post-install helper packaged by flux-release. See docs/systemd-boot.md for the test notes, Secure Boot caveat, and helper usage:

sudo flux-convert-to-systemd-boot

MacBook Neo development

The full Neo image is derived from Fedora Asahi Remix 44 Minimal and adds the Flux Niri desktop and Neo component RPMs. Its local build and independent Neo boot validation are still in progress.

The experimental Neo kernel has a separate ARM64 build path:

./scripts/build-neo-kernel.sh

It builds Gravity's pinned Neo kernel and J700 device tree under build/neo/. See the Neo build guide for dependencies, toolchain setup, output files, and the remaining bootloader and root filesystem work.

The Neo graphics guide builds Gravity Mesa and an ARM64 Weston development image with the USB console and input fixes.

The Neo Niri diagnostic guide adds Niri, Noctalia Shell, Ghostty, and the pinned chrono/dots desktop configuration to that temporary graphics stack.