883 lines
22 KiB
TOML
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
|
|
""" |