Skip to content
integral-830Public

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vanilla Arch Linux ARM for Xiaomi Pad 6 (Pipa)

Building

make builder            # build the Docker builder image (once)
make plasma              # KDE Plasma image
make gnome                # GNOME image
make base                  # console-only, no desktop
make server                 # headless server appliance (niri + wvkbd + alacritty)
make all                    # all four

Requires Docker on a host that can run --privileged containers with loop device access. On x86_64 you additionally need qemu-user-static + binfmt-support registered for aarch64.

docker run --rm --privileged \
  -v "$(pwd)/images:/build/images" -v /dev:/dev \
  archlinux-pipa-builder plasma

Output lands in images/<name>.zip, containing silicium.img, archlinux_esp.raw, archlinux_boot.raw, archlinux_rootfs.raw, vbmeta.img, flash.sh, flash-multiboot.sh, BUILDINFO.txt, SHA256SUMS — flash with ./flash.sh after extracting.

Server image

make server builds a fourth flavor: a clean, headless-appliance image with none of plasma/gnome's desktop-environment footprint, and no pre-installed workload software either — no ssh/Caddy/Forgejo/Immich/Rust/docker/etc. It's a blank canvas; whatever you host on it, you install yourself. What it does provide, out of the box:

  • Compositor: niri, a scrollable-tiling Wayland compositor written in Rust. niri v25.08+ fixed the keymap it hands to clients specifically to make on-screen keyboards like wvkbd work correctly, so it's used instead of labwc.
  • On-screen keyboard: wvkbd (deskintl layout), built from source at image-build time since it isn't packaged for Arch Linux ARM. It's anchored to the bottom of the screen with its default exclusive zone, so it stays visible permanently and niri automatically leaves the rest of the screen for everything else — no toggling required.
  • Terminal/shell: alacritty + fish, both auto-started.
  • Zero-touch, fully passwordless boot: tty1 auto-logs in with no password prompt at all, sudo is passwordless for the default user too (matches the same "no login required" intent), and a fish autostart hook execs straight into niri-session — by the time you can see the screen, alacritty and the keyboard are already up. This hook only fires for the real console login (tty1, non-SSH), so SSH sessions stay plain shells.
  • Networking: NetworkManager + bluetooth are enabled and unblocked via rfkill at boot, same as every other flavor here, so wifi/BT come up without any manual step. Use nmtui (typeable via the on-screen keyboard) to join a network if there's no ethernet.
  • Screen scale: niri only supports scaling a specific named output (e.g. eDP-1), and the Pad 6 panel's actual connector name isn't knowable at build time, so a small helper script (/usr/local/bin/pipa-niri-set-scale) asks niri for whatever output it detected at each startup and scales that one — 1.7x by default.
  • PIPA_INCLUDE_EXTRAS (box64/gamescope/wine-aarch64/widevine — Android/ gaming compat layers) defaults to 0 for this flavor specifically, since none of that belongs on a server; override with PIPA_INCLUDE_EXTRAS=1 if you actually want it.

See PIPA_WVKBD_* and PIPA_SCREEN_SCALE below to customize it. A dedicated CI workflow (.github/workflows/server-build.yml) builds and releases this image independently of the plasma/gnome/base one.

Build environment variables

Variable Default Description
PIPA_PKGS_REPO_URL https://thespider2.github.io/pipa-pkgs/repo/ Kernel/system package repo
PIPA_ALARM_REPO_URL https://maakiopus.github.io/pipa-alarm/repo/ Extra-package repo
PIPA_INCLUDE_SENSORS 1 Set 0 to omit sensor packages
PIPA_INCLUDE_EXTRAS 1 Set 0 to skip box64/gamescope/wine-aarch64/etc
PIPA_DEFAULT_USER pipa Username auto-created at build time (wheel/video/audio/input/storage groups)
PIPA_DEFAULT_PASSWORD pipa Password for that user and root — change it after first boot
PIPA_DEFAULT_HOSTNAME pipa Hostname baked into the image
BUILD_GIT_REV unknown Stamped into BUILDINFO.txt

Server-mode only (make server):

Variable Default Description
PIPA_WVKBD_REPO_URL https://github.com/jjsullivan5196/wvkbd.git wvkbd source repo
PIPA_WVKBD_REV master git ref to build
PIPA_WVKBD_LAYOUT deskintl deskintl or mobintl layout set
PIPA_WVKBD_HEIGHT 300 On-screen keyboard height in pixels
PIPA_SCREEN_SCALE 1.7 niri output scale factor, applied at runtime (see "Server image" above)

Building an individual package from source

If a package is stale or missing in both binary repos:

./scripts/build-from-source.sh box64
# or against a repo you've already cloned:
./scripts/build-from-source.sh linux-pipa /path/to/PKGBUILDs-pipa

This clones maakiopus/PKGBUILDs-pipa and runs makepkg -sf in the given package directory. Needs to run on aarch64 (or under binfmt) since these build ARM64 binaries/kernels.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages