Make BOS a complete, bootable, themed desktop OS
Some checks failed
Mirror to GitHub / mirror (push) Failing after 7s

Install/boot reliability:
- Use native Calamares initcpiocfg/initcpio + explicit grub-install (nvram +
  --removable) in post-install; drop the flaky native bootloader/grubcfg modules.
- mount.conf: bind /proc /sys /dev (devtmpfs) /run + efivars into the chroot.
- bos-copy-kernel: stage kernel + write a stock mkinitcpio preset (replace the
  archiso preset). Per-service systemctl enable (fixes NetworkManager et al.
  silently not enabling due to the all-or-nothing grub-btrfs.path name).

System completeness:
- greetd + tuigreet graphical login; installed pacman.conf + working mirrorlist;
  base CLI tools (nano, micro, vim, htop, …); amd/intel-ucode; tlp + hypridle
  power management; systemd-timesyncd, fstrim.timer; wpa_supplicant wifi; Zen
  browser (republished to the [Breadway] repo).

Desktop + theming:
- Native Lua Hyprland config (hyprland.lua) with curated standard binds; kitty
  (blur) replaces foot; awww wallpaper + pywal palette (tamed to a black base
  with warm accents); GTK dark mode.
- Plymouth boot splash (bos theme: logo + spinner + status) via plymouthcfg.
- Varela Round font; Calamares bread-palette sidebar (logo/black-region polish
  still pending).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Breadway 2026-06-16 09:09:34 +08:00
parent 2a866144f4
commit 9ea57d87c0
35 changed files with 787 additions and 180 deletions

View file

@ -8,3 +8,32 @@ mountOptions:
options: [noatime, "compress=zstd", "space_cache=v2"]
- filesystem: vfat
options: [umask=0077]
# API filesystems mounted into the target so chroot steps work. Without these
# the chroot has no /proc or /dev and `mkinitcpio` aborts ("/proc must be
# mounted!" / "/dev must be mounted!") and grub-install can't probe properly.
# All are real-fs mounts (not bind) — Calamares 3.4.2 here applies fs-type mounts
# reliably but not bind-type ones, so /dev uses a fresh devtmpfs (which still
# exposes all device nodes). extraMountsEfi adds efivars on UEFI so grub-install
# can write an NVRAM boot entry.
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: udev
fs: devtmpfs
mountPoint: /dev
- device: devpts
fs: devpts
mountPoint: /dev/pts
- device: tmpfs
fs: tmpfs
mountPoint: /run
extraMountsEfi:
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars

View file

@ -0,0 +1,6 @@
---
# Boot-splash theme for the installed system. Calamares sets this as the default
# plymouth theme and signals initcpiocfg to add the plymouth hook to the
# initramfs. The post-install script also enforces the hook + a quiet/splash
# cmdline as a belt-and-suspenders.
plymouth_theme: bos

View file

@ -1,9 +1,10 @@
---
# Calamares defaults shellprocess to a 10-second timeout. post-install.sh runs
# mkinitcpio, grub-install, grub-mkconfig, snapper setup and a networked bakery
# install — minutes of work — so without a generous timeout it gets killed
# partway (leaving /boot and the ESP half-populated → unbootable system). The
# leading "-" keeps a non-zero exit non-fatal to the install.
timeout: 1800
# BOS finalization, run after the native initcpio + bootloader modules. It does
# only fast, non-boot-critical work (live-medium cleanup, snapper, services,
# dotfiles), so the shellprocess timeout can no longer leave the system
# unbootable — the boot-critical steps are owned by dedicated Calamares modules.
# A generous timeout is kept as a safety margin, and the leading "-" keeps a
# non-zero exit non-fatal to the install.
timeout: 600
script:
- "-/usr/bin/bash /etc/calamares/post-install.sh"