Files
RedBear-OS/config/redbear-full.toml
T

883 lines
22 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. The installer resolves all group references before
# building/installing; cycle detection surfaces typos. Reference a group
# in [packages] with `group-name = {}` to include all its packages.
[package_groups.graphics-core]
description = "Core graphics stack (DRM, Mesa, Wayland compositor)"
packages = ["redox-drm", "mesa", "libdrm", "libwayland", "wayland-protocols", "redbear-compositor", "libepoxy", "libdisplay-info", "libxcvt", "libudev"]
[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", "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 (full set required for KDE Plasma)"
packages = [
"kf6-extra-cmake-modules", "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-kio", "kf6-kitemmodels", "kf6-kitemviews", "kf6-kjobwidgets",
"kf6-knotifications", "kf6-kpackage", "kf6-kservice", "kf6-ksvg",
"kf6-ktextwidgets", "kf6-kwayland", "kf6-kwidgetsaddons",
"kf6-kwindowsystem", "kf6-kxmlgui", "kf6-notifyconfig", "kf6-parts",
"kf6-prison", "kf6-pty", "kf6-solid", "kf6-sonnet",
"kf6-syntaxhighlighting", "kf6-knewstuff", "kf6-kwallet",
"kf6-kglobalaccel",
]
[package_groups.desktop-session]
description = "Display manager, greeter, auth, and session bootstrap"
packages = [
"kwin", "kdecoration", "breeze", "kirigami",
"sddm", "redbear-authd", "redbear-session-launch", "seatd",
"redbear-greeter", "pam-redbear", "xwayland",
]
[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",
"plasma-wayland-protocols",
"plasma-framework", "plasma-workspace", "plasma-desktop",
"kde-cli-tools", "kf6-attica",
"zbus", "pipewire", "wireplumber",
]
# Convenience meta-group referencing the entire desktop. Useful as a single
# "include everything" toggle in derivative configs.
[package_groups.redbear-full-desktop]
description = "Meta: entire redbear-full desktop (alias of kde-desktop + graphics-core)"
packages = ["kde-desktop"]
[users.messagebus]
uid = 100
gid = 100
name = "messagebus"
home = "/nonexistent"
shell = "/usr/bin/zsh"
[users.greeter]
password = ""
uid = 101
gid = 101
name = "greeter"
home = "/nonexistent"
shell = "/usr/bin/zsh"
[users.root]
password = "password"
uid = 0
gid = 0
shell = "/usr/bin/zsh"
[packages]
# 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, xwayland)
x11proto = {}
libxkbcommon = {}
xkeyboard-config = {}
# Wayland stack
libwayland = {}
wayland-protocols = {}
redbear-compositor = {}
# Keyboard/input
libevdev = {}
libinput = {}
redbear-keymapd = {}
redbear-ime = {}
redbear-accessibility = {}
# Helper libraries for graphics/display
libepoxy = {}
libdisplay-info = {}
libxcvt = {}
libudev = {}
# Qt6 stack
qtbase = {}
qtdeclarative = {}
qtsvg = {}
qtwayland = {}
qt6-wayland-smoke = {}
qt6-sensors = {}
# KF6 Frameworks — full real-build surface for KDE Plasma 6
kf6-extra-cmake-modules = {}
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-kio = {}
kf6-kitemmodels = {}
kf6-kitemviews = {}
kf6-kjobwidgets = {}
kf6-knotifications = {}
kf6-kpackage = {}
kf6-kservice = {}
kf6-ksvg = {}
kf6-ktextwidgets = {}
kf6-kwayland = {}
kf6-kwidgetsaddons = {}
kf6-kwindowsystem = {}
kf6-kxmlgui = {}
kf6-notifyconfig = {}
kf6-parts = {}
kf6-prison = {}
kf6-pty = {}
kf6-solid = {}
kf6-sonnet = {}
kf6-syntaxhighlighting = {}
kf6-knewstuff = {}
kf6-kwallet = {}
kf6-kglobalaccel = {}
kirigami = {}
breeze = {}
# Plasma stack — full KDE desktop
kdecoration = {}
kwin = {}
plasma-wayland-protocols = {}
plasma-framework = {}
plasma-workspace = {}
plasma-desktop = {}
kde-cli-tools = {}
konsole = {}
kglobalacceld = {}
# ICU (Unicode/intl support)
icu = {}
# Display manager and authentication chain
redbear-authd = {}
redbear-session-launch = {}
seatd = {}
redbear-greeter = {}
pam-redbear = {}
sddm = {}
xwayland = {}
# D-Bus Rust bindings + media
zbus = {}
pipewire = {}
wireplumber = {}
# AMD GPU display
amdgpu = {}
# Core Red Bear umbrella package
redbear-meta = {}
# Power TUI
redbear-power = {}
# Native build toolchain (Phase 3: GCC + binutils running on redox)
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 = {}
git = {}
mc = {}
[[files]]
path = "/lib/firmware/amdgpu"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/usr/lib/fonts"
data = "/usr/share/fonts"
symlink = true
# ---------------------------------------------------------------------------
# Runtime directories created before any service starts
# ---------------------------------------------------------------------------
[[files]]
path = "/run/redbear-display-session"
data = ""
directory = true
mode = 0o700
[[files]]
path = "/tmp/run/redbear-greeter"
data = ""
directory = true
mode = 0o700
[[files]]
path = "/tmp/run/redbear-display-session"
data = ""
directory = true
mode = 0o700
[[files]]
path = "/usr/share/wayland-sessions"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/etc/pam.d"
data = ""
directory = true
mode = 0o755
[[files]]
path = "/var/lib/sddm"
data = ""
directory = true
mode = 0o711
[[files]]
path = "/var/log/sddm"
data = ""
directory = true
mode = 0o700
[[files]]
path = "/etc/sddm"
data = ""
directory = true
mode = 0o755
# ---------------------------------------------------------------------------
# PAM configuration — SDDM routes every conversation through pam-redbear
# which proxies to redbear-authd over /run/redbear-authd.sock
# ---------------------------------------------------------------------------
[[files]]
path = "/etc/pam.d/sddm"
data = """
# PAM configuration for SDDM display manager (Red Bear OS)
#
# The auth stack authenticates against /etc/passwd+/etc/shadow via the
# pam-redbear module, which is a Rust cdylib that proxies every
# pam_authenticate call to redbear-authd over /run/redbear-authd.sock.
# redbear-authd enforces lockout (5 failures/60s → 30s lockout), validates
# argon2/SHA-crypt hashes, and issues an approval token that
# redbear-session-launch exchanges for a user shell.
#
# Session-open and account-management are pass-through because authd already
# validated the credentials; pam-redbear returns PAM_SUCCESS locally.
auth include sddm-autologin
auth include sddm-greeter
account include sddm-greeter
session include sddm-greeter
password include sddm-greeter
"""
[[files]]
path = "/etc/pam.d/sddm-greeter"
data = """
# PAM stack for the SDDM Wayland greeter (sddm-greeter-qt6).
# Every authentication conversation routes through pam-redbear.so, which
# speaks to redbear-authd. Lockout, failure delay, and VT-binding are
# enforced server-side in authd.
auth required pam_redbear.so
account required pam_redbear.so
password required pam_redbear.so
session required pam_redbear.so
"""
[[files]]
path = "/etc/pam.d/sddm-autologin"
data = """
# PAM stack for SDDM's autologin path. autologin is disabled by default in
# redbear-full ([Autologin] User=). To enable, set Autologin.User in
# /etc/sddm.conf and provide the matching password file.
auth sufficient pam_redbear.so
account sufficient pam_redbear.so
session optional pam_redbear.so
"""
[[files]]
path = "/etc/pam.d/sddm-helper"
data = """
# PAM stack for sddm-helper (the helper that launches the user session after
# authentication succeeds). Same auth path as the greeter.
auth required pam_redbear.so
account required pam_redbear.so
session required pam_redbear.so
"""
# ---------------------------------------------------------------------------
# Wayland session desktop file — SDDM enumerates /usr/share/wayland-sessions
# ---------------------------------------------------------------------------
[[files]]
path = "/usr/share/wayland-sessions/kde-wayland.desktop"
data = """
[Desktop Entry]
Type=Application
Name=KDE Plasma (Wayland)
Comment=The KDE Plasma desktop running natively on Wayland
Exec=/usr/bin/redbear-kde-session
TryExec=/usr/bin/redbear-kde-session
DesktopNames=KDE
"""
[[files]]
path = "/usr/share/wayland-sessions/redbear-wayland.desktop"
data = """
[Desktop Entry]
Type=Application
Name=Red Bear Wayland Session
Comment=Minimal Wayland session launched by redbear-session-launch
Exec=/usr/bin/redbear-session-launch --mode session --session kde-wayland
TryExec=/usr/bin/redbear-session-launch
DesktopNames=RedBear
"""
# ---------------------------------------------------------------------------
# Init services
# ---------------------------------------------------------------------------
[[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_driver-manager.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/18_dri-symlinks.service"
data = """
[unit]
description = "DRI device symlinks for KWin libudev fallback"
# Creates /dev/dri/renderD128 -> /scheme/drm/card0 so KWin's
# libudev-based discovery finds the GPU even when KWIN_DRM_DEVICES
# is not honored (libudev 252+ ignores KWIN_DRM_DEVICES if
# the device is detectable via udev). This is the
# libudev-discoverable fallback path; the primary path
# is still KWIN_DRM_DEVICES=/scheme/drm/card0.
requires_weak = [
"00_driver-manager.service",
"12_dbus.service",
]
[service]
cmd = "/bin/sh"
args = ["-c", "mkdir -p /dev/dri && ln -sfn /scheme/drm/card0 /dev/dri/card0 && ln -sfn /scheme/drm/card0 /dev/dri/renderD128 && ln -sfn /scheme/drm/card0 /dev/dri/controlD64"]
type = "oneshot"
"""
[[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/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"
"""
[[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
"""
# ---------------------------------------------------------------------------
# SDDM — real Wayland display manager (replaces legacy redbear-greeterd by
# default; legacy path remains gated by the enable-legacy-greeter sentinel)
# ---------------------------------------------------------------------------
[[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
# KWin DRM device path. KWin's drm_backend.cpp uses libudev to
# enumerate /dev/dri/renderDN. On Redox, the DRM device is exposed
# at /scheme/drm/card0; we set KWIN_DRM_DEVICES so KWin skips
# udev enumeration and uses the explicit device list. The
# /dev/dri/renderD128 symlink below makes KWin's libudev fallback
# also work, so the path is robust to the user's libudev version
# (libudev 252+ ignores KWIN_DRM_DEVICES if the device is
# detectable via udev).
KWIN_DRM_DEVICES=/scheme/drm/card0
[Autologin]
User=
Session=
# X11 is intentionally disabled on Red Bear. KWin runs the Wayland backend;
# any X client goes through Xwayland only on explicit request.
Enable=false
# KWin Wayland device binding. The /dev/dri/renderD128 symlink points
# at /scheme/drm/card0 so KWin's libudev enumeration finds the GPU
# even when KWIN_DRM_DEVICES is not honored. The symlink is created
# by the 19_dri-symlinks.service init entry below.
"""
[[files]]
path = "/etc/init.d/21_sddm.service"
data = """
[unit]
description = "SDDM display manager (Wayland)"
# Service ordering: SDDM is the graphical login surface for the system.
# Driver-manager must have settled so /scheme/drm/card0 exists before SDDM
# launches its compositor; dbus is required for SDDM's IPC; authd is required
# for PAM-backed authentication; sessiond/seatd are required for SDDM's
# seat/session management.
requires_weak = [
"00_driver-manager.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"
"""
# Legacy greeter (redbear-greeterd) — kept for testing/rollback. Disabled
# by default. The sentinel file /etc/redbear/enable-legacy-greeter, which
# the image does NOT install, re-enables it.
[[files]]
path = "/etc/init.d/20_greeter.service"
data = """
[unit]
description = "Red Bear greeter service (legacy, disabled by default)"
condition_path_exists = ["/etc/redbear/enable-legacy-greeter"]
requires_weak = [
"00_driver-manager.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/init.d/20_display.service"
data = """
[unit]
description = "KDE session assembly helper (legacy, disabled by default)"
condition_path_exists = ["/etc/redbear/enable-legacy-greeter"]
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"
"""
[groups.greeter]
gid = 101
members = ["greeter"]
[groups.messagebus]
gid = 100
members = ["messagebus"]
# ---------------------------------------------------------------------------
# Driver dispatch — Redox's driver-manager consults /lib/drivers.d/*.toml
# ---------------------------------------------------------------------------
[[files]]
path = "/lib/drivers.d/30-graphics.toml"
data = """
[[driver]]
name = "redox-drm"
description = "DRM/KMS display driver (AMD + Intel + VirtIO)"
priority = 60
command = ["/usr/bin/redox-drm"]
[[driver.match]]
class = 0x03
[[driver]]
name = "virtio-gpud"
description = "VirtIO GPU driver"
priority = 60
command = ["/usr/lib/drivers/virtio-gpud"]
[[driver.match]]
vendor = 0x1AF4
class = 0x03
[[driver]]
name = "redox-drm"
description = "Intel GPU display driver"
priority = 61
command = ["/usr/bin/redox-drm"]
[[driver.match]]
vendor = 0x8086
class = 0x03
subclass = 0x00
[[driver]]
name = "redox-drm"
description = "AMD GPU display driver"
priority = 61
command = ["/usr/bin/redox-drm"]
[[driver.match]]
vendor = 0x1002
class = 0x03
subclass = 0x00
# VirtIO GPU (QEMU virtio-gpu / VirGL, e.g. 1AF4:1050 class 03) — bind redox-drm
# above the base virtio-gpud (@60) so the desktop gets a real /scheme/drm/card0
# (redox-drm VirtIO KMS) instead of virtio-gpud's VT-only scanout. Subclass
# omitted: QEMU reports virtio-gpu as class 0x03 subclass 0x80, not 0x00.
[[driver]]
name = "redox-drm"
description = "VirtIO GPU display driver (VirGL/KMS)"
priority = 61
command = ["/usr/bin/redox-drm"]
[[driver.match]]
vendor = 0x1AF4
class = 0x03
"""
[[files]]
path = "/etc/environment.d/90-dbus.conf"
data = """
DBUS_SYSTEM_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket
"""