Files
RedBear-OS/config/redbear-full.toml
T
vasilito a84a99cc24 build-cache: package groups in config + installer local fork (Phase 3)
- config/redbear-full.toml: 9 package groups defined (graphics-core,
  input-stack, dbus-services, firmware-stack, qt6-core, qt6-extras,
  kf6-frameworks, desktop-session, kde-desktop)
- Cargo.toml: switch redox_installer from upstream git to local fork
  (path = "local/sources/installer") to use package group support
- Cargo.lock: remove installer git source entry
- local/sources/installer: bump to package groups commit

Groups are resolved transparently by Config::from_file() — the cookbook
repo binary sees expanded packages automatically.
2026-06-30 15:59:36 +03:00

629 lines
14 KiB
TOML

# Red Bear OS Full Configuration
# Desktop/graphics ISO for bare metal and QEMU.
#
# Build: make live CONFIG_NAME=redbear-full
# QEMU: make all CONFIG_NAME=redbear-full && make qemu
#
# Extends redbear-mini with the full desktop/graphics stack:
# Wayland, Qt6, KF6, KWin, Mesa, DRM drivers, firmware, greeter.
include = ["redbear-mini.toml"]
[general]
filesystem_size = 4096
# Package groups — meta-package definitions for logical grouping of the
# desktop stack. Reference a group in [packages] with `group-name = {}`
# to include all its packages. Groups can reference other groups.
# The installer resolves all group references before building/installing.
[package_groups.graphics-core]
description = "Core graphics stack (DRM, Mesa, Wayland compositor)"
packages = ["redox-drm", "mesa", "libdrm", "libwayland", "wayland-protocols", "redbear-compositor"]
[package_groups.input-stack]
description = "Input device support (evdev, libinput, keymaps, IME, accessibility)"
packages = ["libevdev", "libinput", "redbear-keymapd", "redbear-ime", "redbear-accessibility"]
[package_groups.dbus-services]
description = "D-Bus system bus and session broker"
packages = ["expat", "dbus"]
[package_groups.firmware-stack]
description = "Firmware loading infrastructure"
packages = ["redbear-firmware", "firmware-loader"]
[package_groups.qt6-core]
description = "Qt 6 core modules"
packages = ["qtbase", "qtdeclarative", "qtsvg"]
[package_groups.qt6-extras]
description = "Qt 6 additional modules (Wayland, sensors)"
packages = ["qtwayland", "qt6-wayland-smoke", "qt6-sensors"]
[package_groups.kf6-frameworks]
description = "KDE Frameworks 6 (all 38 frameworks)"
packages = [
"kf6-attica", "kf6-karchive", "kf6-kauth", "kf6-kbookmarks",
"kf6-kcmutils", "kf6-kcodecs", "kf6-kcolorscheme", "kf6-kcompletion",
"kf6-kconfig", "kf6-kconfigwidgets", "kf6-kcoreaddons", "kf6-kcrash",
"kf6-kdbusaddons", "kf6-kdeclarative", "kf6-kded6", "kf6-kguiaddons",
"kf6-ki18n", "kf6-kiconthemes", "kf6-kidletime", "kf6-kitemmodels",
"kf6-kitemviews", "kf6-kjobwidgets", "kf6-knotifications", "kf6-kpackage",
"kf6-kservice", "kf6-ktextwidgets", "kf6-kwayland", "kf6-kwidgetsaddons",
"kf6-kxmlgui", "kf6-prison", "kf6-solid", "kf6-sonnet",
"kf6-knewstuff", "kf6-kwallet", "kf6-kglobalaccel", "kf6-pty",
"kf6-notifyconfig", "kf6-parts", "kf6-kio",
]
[package_groups.desktop-session]
description = "Display manager, greeter, auth, and session bootstrap"
packages = [
"kwin", "kdecoration", "sddm",
"redbear-authd", "redbear-session-launch", "seatd",
"redbear-greeter", "pam-redbear",
]
[package_groups.kde-desktop]
description = "Complete KDE Plasma desktop stack (all groups combined)"
packages = [
"graphics-core", "input-stack", "dbus-services", "firmware-stack",
"qt6-core", "qt6-extras", "kf6-frameworks", "desktop-session",
"icu", "konsole", "kglobalacceld", "amdgpu",
]
[users.messagebus]
uid = 100
gid = 100
name = "messagebus"
home = "/nonexistent"
shell = "/usr/bin/zsh"
[users.root]
password = "password"
uid = 0
gid = 0
shell = "/usr/bin/zsh"
[packages]
# Twilight Commander — pure-Rust TUI file manager
tlc = {}
# Runtime driver parameter control surface.
driver-params = {}
# D-Bus IPC (required by greeter/session services)
expat = {}
dbus = {}
# Firmware loading
redbear-firmware = {}
firmware-loader = {}
# NUMA topology discovery (userspace daemon)
numad = {}
# GPU/graphics stack
redox-drm = {}
mesa = {}
libdrm = {}
# X11 protocol headers (needed by libxau, libxkbcommon, etc.)
x11proto = {}
libxkbcommon = "ignore"
xkeyboard-config = "ignore"
libwayland = {}
wayland-protocols = {}
redbear-compositor = {}
# Keyboard/input
# libxkbcommon = {} # build needed
# xkeyboard-config = {} # build needed
libevdev = {}
libinput = {}
redbear-keymapd = {}
redbear-ime = {}
redbear-accessibility = {}
# Qt6 stack
qtbase = {}
qtdeclarative = {}
qtsvg = {}
qtwayland = {}
qt6-wayland-smoke = {}
qt6-sensors = {}
# KF6 Frameworks — explicit real-build surface in alphabetical order
# kirigami: blocked (Qt6 Wayland null+8 crash — NOT QML gate; headers/libs DO exist)
kf6-kio = {}
# kde-cli-tools = {} # blocked: direct repo cook fails
kdecoration = {}
kf6-attica = {}
kf6-karchive = {}
kf6-kauth = {}
kf6-kbookmarks = {}
kf6-kcmutils = {}
kf6-kcodecs = {}
kf6-kcolorscheme = {}
kf6-kcompletion = {}
kf6-kconfig = {}
kf6-kconfigwidgets = {}
kf6-kcoreaddons = {}
kf6-kcrash = {}
kf6-kdbusaddons = {}
kf6-kdeclarative = {}
kf6-kded6 = {}
kf6-kguiaddons = {}
kf6-ki18n = {}
kf6-kiconthemes = {}
kf6-kidletime = {}
kf6-kitemmodels = {}
kf6-kitemviews = {}
kf6-kjobwidgets = {}
kf6-knotifications = {}
kf6-kpackage = {}
kf6-kservice = {}
kf6-ktextwidgets = {}
kf6-kwayland = {}
kf6-kwidgetsaddons = {}
kf6-kxmlgui = {}
kf6-prison = {}
kf6-solid = {}
kf6-sonnet = {}
kf6-knewstuff = {}
kf6-kwallet = {}
kf6-kglobalaccel = {}
kf6-pty = {}
kf6-notifyconfig = {}
kf6-parts = {}
icu = {}
konsole = {}
kglobalacceld = {}
# KWin — real cmake build. null+8 crash verified FIXED (qtwaylandscanner null guards,
# commits de2d74c37e + 882c2974ec). Still gated on qtdeclarative cross-target cmake
# (host tool Qt6::qmlprofiler is intentionally not built — see qtdeclarative recipe).
kwin = {}
# Plasma packages — still commented out; need kirigami (QML) + plasma-workspace to build
# before they can be enabled. See local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md.
# plasma-framework = {}
# plasma-workspace = {}
# plasma-desktop = {}
redbear-authd = {}
redbear-session-launch = {}
seatd = {}
redbear-greeter = {}
pam-redbear = {}
sddm = {}
amdgpu = {}
# Core Red Bear umbrella package
redbear-meta = {}
redbear-power = {}
# Phase 1 runtime validation tests (POSIX: signalfd, timerfd, eventfd, shm_open, sem_open, waitid)
# relibc-phase1-tests = {} # Disabled: linker errors with relibc, not critical for ISO
# Native build toolchain (Phase 3: GCC + binutils running on redox)
# Produces gcc/g++/as/ld that execute inside Red Bear OS
gcc-native = "ignore"
binutils-native = {}
# llvm-native = {} # suppressed: Redox C++/pthread header gaps; not needed for greeter proof
# rust-native = {} # suppressed: depends on llvm-native; not needed for greeter proof
# Desktop fonts and icons
dejavu = {}
freefont = {}
hicolor-icon-theme = {}
pop-icon-theme = {}
# Suppress legacy desktop packages
orbdata = "ignore"
orbital = "ignore"
orbterm = "ignore"
orbutils = "ignore"
cosmic-edit = "ignore"
cosmic-files = "ignore"
cosmic-icons = "ignore"
cosmic-term = "ignore"
curl = "ignore"
git = "ignore"
#mc = {}
#curl = "ignore" # suppressed: cascade rebuild
#git = "ignore" # suppressed: cascade rebuild
#konsole = {} # WIP: recipe exists, not yet built — blocked by libiconv fetch
#kf6-pty = {} # WIP: recipe exists, not yet built
[[files]]
path = "/lib/firmware/amdgpu"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/usr/lib/fonts"
data = "/usr/share/fonts"
symlink = true
[[files]]
path = "/etc/init.d/05_boot-essential.target"
data = """
[unit]
description = "Boot essential services target"
requires_weak = [
"00_base.target",
]
"""
[[files]]
path = "/etc/init.d/13_iommu.service"
data = """
[unit]
description = "IOMMU DMA remapping daemon"
requires_weak = [
"12_boot-late.target",
"00_pcid-spawner.service",
]
[service]
cmd = "/usr/bin/iommu"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/12_dbus.service"
data = """
[unit]
description = "D-Bus system bus"
requires_weak = [
"12_boot-late.target",
"00_ipcd.service",
]
[service]
cmd = "/usr/bin/dbus-daemon"
args = ["--system", "--nopidfile", "--address=unix:path=/run/dbus/system_bus_socket"]
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/13_redbear-sessiond.service"
data = """
[unit]
description = "Red Bear session broker (org.freedesktop.login1)"
requires_weak = [
"12_dbus.service",
]
[service]
cmd = "/usr/bin/redbear-sessiond"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/13_seatd.service"
data = """
[unit]
description = "seatd seat management daemon"
requires_weak = [
"12_dbus.service",
"13_redbear-sessiond.service",
]
[service]
cmd = "/usr/bin/seatd"
args = ["-l", "info"]
type = "oneshot_async"
"""
[[files]]
path = "/etc/keymaps/.gitkeep"
data = ""
[[files]]
path = "/etc/init.d/13_redbear-keymapd.service"
data = """
[unit]
description = "Runtime keymap daemon"
requires_weak = [
"10_evdevd.service",
]
[service]
cmd = "/usr/bin/redbear-keymapd"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/13_redbear-ime.service"
data = """
[unit]
description = "Input method engine daemon"
requires_weak = [
"10_evdevd.service",
]
[service]
cmd = "redbear-ime"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/13_redbear-accessibility.service"
data = """
[unit]
description = "Accessibility input filter daemon (sticky/slow/bounce keys)"
requires_weak = [
"10_evdevd.service",
]
[service]
cmd = "redbear-accessibility"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/14_redbear-upower.service"
data = """
[unit]
description = "UPower D-Bus service (org.freedesktop.UPower)"
requires_weak = [
"12_dbus.service",
]
[service]
cmd = "redbear-upower"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/14_redbear-udisks.service"
data = """
[unit]
description = "UDisks2 D-Bus service (org.freedesktop.UDisks2)"
requires_weak = [
"12_dbus.service",
]
[service]
cmd = "redbear-udisks"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/14_redbear-polkit.service"
data = """
[unit]
description = "PolicyKit1 D-Bus service (org.freedesktop.PolicyKit1)"
requires_weak = [
"12_dbus.service",
]
[service]
cmd = "redbear-polkit"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/19_redbear-authd.service"
data = """
[unit]
description = "Red Bear authentication daemon"
requires_weak = [
"12_dbus.service",
]
[service]
cmd = "/usr/bin/redbear-authd"
envs = { QT_PLUGIN_PATH = "/usr/plugins", QT_QPA_PLATFORM_PLUGIN_PATH = "/usr/plugins/platforms", QML2_IMPORT_PATH = "/usr/qml", XCURSOR_THEME = "Pop", XKB_CONFIG_ROOT = "/usr/share/X11/xkb", KWIN_DRM_DEVICES = "/scheme/drm/card0" }
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/20_display.service"
data = """
[unit]
description = "KDE session assembly helper"
requires_weak = [
"12_dbus.service",
"13_redbear-sessiond.service",
"13_seatd.service",
"19_redbear-authd.service",
]
[service]
cmd = "/usr/bin/redbear-session-launch"
args = ["--username", "root", "--mode", "session", "--session", "kde-wayland", "--vt", "4", "--runtime-dir", "/tmp/run/redbear-display-session", "--wayland-display", "wayland-display"]
envs = { QT_PLUGIN_PATH = "/usr/plugins", QT_QPA_PLATFORM_PLUGIN_PATH = "/usr/plugins/platforms", QML2_IMPORT_PATH = "/usr/qml", XCURSOR_THEME = "Pop", XKB_CONFIG_ROOT = "/usr/share/X11/xkb", REDBEAR_KDE_SESSION_BACKEND = "virtual", REDBEAR_KDE_SESSION_STATE_DIR = "/run/redbear-display-session" }
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/20_greeter.service"
data = """
[unit]
description = "Red Bear greeter service"
requires_weak = [
"00_pcid-spawner.service",
"12_dbus.service",
"13_redbear-sessiond.service",
"13_seatd.service",
"19_redbear-authd.service",
]
[service]
cmd = "/usr/bin/redbear-greeterd"
envs = { VT = "3", REDBEAR_GREETER_USER = "greeter", KWIN_DRM_DEVICES = "/scheme/drm/card0", REDBEAR_DRM_WAIT_SECONDS = "30", REDBEAR_GREETER_RUNTIME_DIR = "/tmp/run/redbear-greeter" }
type = "oneshot_async"
"""
[[files]]
path = "/etc/login.defs"
data = """
UID_MIN 0
UID_MAX 65535
GID_MIN 0
GID_MAX 65535
SYS_UID_MIN 0
SYS_UID_MAX 999
SYS_GID_MIN 0
SYS_GID_MAX 999
"""
[[files]]
path = "/etc/sddm.conf"
data = """
[Theme]
Current=maya
[Users]
MinimumUid=0
MaximumUid=65535
[Wayland]
CompositorCommand=/usr/bin/redbear-compositor
SessionDir=/usr/share/wayland-sessions
[Autologin]
User=
Session=
"""
[[files]]
path = "/etc/init.d/21_sddm.service"
data = """
[unit]
description = "SDDM display manager (Wayland)"
requires_weak = [
"00_pcid-spawner.service",
"12_dbus.service",
"13_redbear-sessiond.service",
"13_seatd.service",
"19_redbear-authd.service",
]
[service]
cmd = "/usr/bin/sddm"
args = ["--no-daemon"]
envs = { QT_PLUGIN_PATH = "/usr/plugins", QT_QPA_PLATFORM_PLUGIN_PATH = "/usr/plugins/platforms", QML2_IMPORT_PATH = "/usr/qml", XCURSOR_THEME = "Pop", XKB_CONFIG_ROOT = "/usr/share/X11/xkb", KWIN_DRM_DEVICES = "/scheme/drm/card0", DISPLAY = ":0", WAYLAND_DISPLAY = "wayland-0", XDG_RUNTIME_DIR = "/tmp/run/redbear-greeter", XDG_SESSION_TYPE = "wayland", REDBEAR_DRM_WAIT_SECONDS = "30" }
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/29_activate_console.service"
data = """
[unit]
description = "Activate fallback console VT"
requires_weak = [
"05_boot-essential.target",
]
[service]
cmd = "inputd"
args = ["-A", "2"]
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/30_console.service"
data = """
[unit]
description = "Console terminals"
requires_weak = [
"29_activate_console.service",
]
[service]
cmd = "getty"
args = ["2"]
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/31_debug_console.service"
data = """
[unit]
description = "Debug console on serial port"
requires_weak = [
"29_activate_console.service",
]
[service]
cmd = "getty"
args = ["/scheme/debug/no-preserve", "-J"]
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/99_diag_serial.service"
data = """
[unit]
description = "Serial diagnostic marker"
requires_weak = [
"31_debug_console.service",
"30_console.service",
"12_dbus.service",
]
[service]
cmd = "zsh"
args = ["-c", "echo BOOT_COMPLETE_SERIAL_MARKER"]
type = "oneshot"
"""
[users.greeter]
password = ""
uid = 101
gid = 101
name = "greeter"
home = "/nonexistent"
shell = "/usr/bin/zsh"
[groups.greeter]
gid = 101
members = ["greeter"]
[groups.messagebus]
gid = 100
members = ["messagebus"]
[[files]]
path = "/etc/pcid.d/ihdgd.toml"
data = """
[[drivers]]
name = "Intel GPU (VGA compatible)"
class = 0x03
vendor = 0x8086
subclass = 0x00
command = ["redox-drm"]
[[drivers]]
name = "Intel GPU (3D controller)"
class = 0x03
vendor = 0x8086
subclass = 0x02
command = ["redox-drm"]
"""
[[files]]
path = "/etc/pcid.d/virtio-gpud.toml"
data = """
[[drivers]]
name = "VirtIO GPU"
class = 0x03
vendor = 0x1af4
device = 0x1050
command = ["/usr/bin/redox-drm"]
"""
[[files]]
path = "/etc/environment.d/90-dbus.conf"
data = """
DBUS_SYSTEM_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket
"""