made by my friend, men
arch-based linux distro with atomic updates, btrfs snapshots, and a.. well idk what to put here lmao
mochiOS is a Linux distribution built on Arch Linux that actually works out of the box. The simple installation process makes it extremely pleasant and easy to get into.
uses mochiboot (a limine fork), abroot (a/b atomic updates on btrfs), and a custom mochi cli that wraps pacman so you don't have to remember flags.
| feature | what it does |
|---|---|
| atomic updates | a/b root partitions via abroot — update flips a flag, boot into the new side. rollback is just selecting the old one |
| btrfs snapshots | every major operation snapshots your root. snapshot picker in the bootloader if things go sideways |
| mochiboot bootloader | custom branded limine fork with boot counters, recovery auto-detect, and snapshot picker |
| mochi cli | mochi beat firefox instead of sudo pacman -S firefox. native remove, update, search, rollback, snapshot commands |
| gui installer | pyqt6 wizard — pick your de, greeter, disk layout, done |
| tui installer | textual-based fallback if you're not running a desktop |
| multiple des | kde plasma, gnome, hyprland — pick at install time |
| greeter choice | sddm, gdm, lightdm, ly, or greetd — decoupled from your de choice |
| live iso | boots into kde plasma with konsole + gparted. vmware and virtualbox guest utils baked in |
- kde plasma — full kde experience with xrender fallback for vbox compatibility
- gnome — clean gnome session
- hyprland — fully preconfigured with mochios purple theme, keybinds, waybar, dunst, wofi, hyprpaper
all shipped with wireplumber/pipewire for audio.
you pick the login screen separately from your desktop:
- sddm (default for kde)
- gdm (default for gnome)
- lightdm
- ly — tty-based, minimal
- greetd — minimal greeter daemon
the mochi command is what you use to actually do stuff with packages:
mochi beat <package> # install a package (wraps pacman -S)
mochi remove <package> # remove a package
mochi update # full system update
mochi search <query> # search repos
mochi snapshot # take a btrfs snapshot
mochi rollback # revert to a previous snapshot
mochi status # current abroot partition info
mochi repo add # add the [mochi] overlay repomochios uses a btrfs-based a/b root scheme. two subvolumes (root_a, root_b) live on the same partition. you're always booted into one; updates target the other. on next boot, the bootloader flips to the updated side. if it fails 3 times, it falls back to the known-good side automatically.
mochiboot is a fork of limine v12.5 with:
- mochios branding & theme
- boot counter via efi variables
- auto recovery after 3 consecutive failed boots
- snapshot picker via initramfs hook
- recovery entry support
- download the latest iso from releases
- write to usb: use rufus if you're on windows, balena etcher if you're on linux
- boot from usb
- run the mochiinstall gui (desktop) or
mochiinstall --tui(terminal) - follow the wizard: keyboard → disk → de → greeter → user → install
- uefi system recommended (legacy bios supported via syslinux)
- 4gb ram minimum, 8gb+ recommended
- 20gb disk minimum
- amd64 (x86_64) processor
git clone https://github.com/iluxz/MochiOS.git
cd MochiOS
# install dependencies (arch)
sudo pacman -S archiso
# build the iso
sudo ./build.sh
# output: out/mochios-*.isoenvironment variables:
| var | default | description |
|---|---|---|
MOCHIOS_DIR |
/home/mochi/mochios |
project root |
OUT_DIR |
$MOCHIOS_DIR/out |
iso output directory |
NIGHTLY |
false |
set to true for nightly dark-purple branding |
WORK_DIR |
/home/mochi/mochios-work |
build working directory (not /tmp — need space!) |
mochios uses arch linux repositories plus a custom [mochi] overlay repo with extra packages:
mochi repo add # adds [mochi] to /etc/pacman.confcurrent boot ──> root_a (active)
│
sudo mochi update
│
v
root_b (updated)
│
reboot ──> root_b (active)
│
mochi rollback
│
v
root_a (back to known-good)
mochiboot tracks boot success via efi variables. if the system fails to boot 3 times in a row, the recovery entry is automatically selected on the next boot. you can force recovery mode by setting the efi variable:
efibootmgr --setvar MochiBootForceRecovery -b 0x0000 -d /dev/sda -p 1gpl v3 — see LICENSE
built with :3 and way too much coffee