Arch Linux + ZFS + GNOME appliance for ASUS G771JM. Family media center and retro gaming machine.
- Shell 86%
- Python 14%
- Replace SDDM with GDM 50 (Wayland-native) to properly support GNOME 50's Wayland-only architecture - Update install_arch.sh: install gdm instead of sddm, configure GDM PAM for nopasswdlogin passwordless login, remove SDDM X11 config and theme - Update ansible: new gdm role replaces sddm role, enables gdm service, deploys nopasswdlogin PAM config for gdm-password - Update AGENTS.md: document GDM 50 + Wayland architecture, passwordless login via nopasswdlogin group, DRM master handoff via logind - Remove catppuccin-sddm-theme-macchiato from AUR packages - Remove GNOME X11 session file creation (not needed for GDM Wayland) - Update power role: rename task from 'non-SDDM-greeter' to 'non-GDM-greeter' |
||
|---|---|---|
| ansible | ||
| archiso | ||
| docs | ||
| images | ||
| scripts | ||
| .gitignore | ||
| AGENTS.md | ||
| README.md | ||
archbox — ASUS G771JM Entertainment Appliance
Arch Linux + ZFS + GNOME on an ASUS ROG G771JM laptop. Family media center and retro gaming box for the living room.
Kids must never fail to boot. Dad must never get a call during work.
Specs
| Component | Detail | Driver |
|---|---|---|
| CPU | i7-4710HQ (Haswell, 4C/8T) | — |
| iGPU | Intel HD Graphics 4600 | i915 (in-kernel) |
| dGPU | NVIDIA GTX 860M (GM107, 2 GB) | Nouveau + NVK + Zink |
| RAM | 16 GB DDR3L | — |
| SSD | Single SATA SSD | — |
| Ethernet | Realtek RTL8111 | r8169 (in-kernel) |
| Audio | Realtek ALC668 | snd_hda_intel + sof-firmware |
Architecture
GNOME Wayland → Intel HD 4600 (i915)
↑
DRI_PRIME=1 → GTX 860M (Nouveau + NVK + Zink)
Desktop, Kodi, Moonlight decode on Intel. Games on NVIDIA via PRIME offload. If the dGPU driver breaks, the machine is still a fully functional media center.
Key Decisions
- GPU: Nouveau + NVK + Zink (open source). Not nvidia-580xx-dkms — Arch rolling + DKMS is a maintenance trap, and flickering is reported on Maxwell.
- WiFi: Unused (ethernet-only). Broadcom BCM43142 has no FOSS driver anyway.
- Video decode: Intel VA-API for H.264. HEVC is software decode on CPU (Haswell has no HEVC block; Nouveau doesn't expose NVDEC).
- Moonlight: Force H.264 on the server. Intel hardware-decodes H.264 with microsecond latency.
- No Steam: Offline/LAN games only. Lutris + Wine for game management.
- ZFSBootMenu: Boot environments with automatic rollback on failed boot.
- Zero DKMS: No broadcom-wl, no nvidia. All drivers in-kernel or in Mesa.
App Stack
| App | Purpose | GPU |
|---|---|---|
| Kodi + Bingie skin | Movies, TV, IPTV | Intel (VA-API) |
| Moonlight-qt | Game streaming from server | Intel (VA-API H.264) |
| RetroArch + Dolphin | NES–GameCube emulation | Intel (light cores), NVIDIA (Dolphin/N64) |
| Wine + Lutris | Classic PC games | NVIDIA |
| ScummVM + DOSBox | Point-and-click adventures | Intel |
| Waydroid | Android kids' apps | NVIDIA (GLES passthrough) |
Repo Structure
archbox/
├── README.md This file
├── AGENTS.md AI context: commands, traps, architecture
├── docs/
│ ├── ARCH_INSTALL_PLAN.md Full install plan + package list
│ ├── FOSS_ANALYSIS.md Driver audit for every component
│ └── HARDWARE_ASUS_G771JM.md Full hardware spec
├── scripts/
│ ├── install_arch.sh Automated Arch installer
│ └── nouveau-pstate.service GPU reclocking systemd unit
├── archiso/
│ ├── build.sh Builds custom archiso (podman)
│ ├── packages.x86_64 ISO package list
│ └── pacman.conf With archzfs repo
└── .gitignore
Build Pipeline
Debian (current)
└── podman Arch container
└── archiso build
└── QEMU test (vm)
└── USB boot → bare metal G771JM
See Also
docs/ARCH_INSTALL_PLAN.md— detailed install stepsdocs/FOSS_ANALYSIS.md— why we chose each driverAGENTS.md— commands, traps, architecture for AI assistant