d7444606cb
Getty services now use respawn = true so init restarts them on exit. redbear-live-mini expanded with additional boot-late services and reorganized service ordering. Device services TOML gains new entries for hardened daemon lifecycle.
382 lines
7.1 KiB
TOML
382 lines
7.1 KiB
TOML
# Red Bear OS Target Wayland Desktop Configuration
|
||
# Build: make all CONFIG_NAME=redbear-kde
|
||
# Live: make live CONFIG_NAME=redbear-kde
|
||
#
|
||
# Intended desktop direction: KWin Wayland session on Red Bear OS
|
||
# Tracked default desktop target for Red Bear OS
|
||
# Current state: KWin + KF6 + Qt6 + Mesa + D-Bus + seatd
|
||
# Runtime compositor/session proof is still required for broader support claims
|
||
# Future: add plasma-workspace, plasma-desktop when their deps are resolved
|
||
|
||
include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.toml", "redbear-device-services.toml", "redbear-netctl.toml"]
|
||
|
||
[general]
|
||
filesystem_size = 4096
|
||
|
||
[users.messagebus]
|
||
uid = 100
|
||
gid = 100
|
||
name = "messagebus"
|
||
home = "/nonexistent"
|
||
shell = "/usr/bin/ion"
|
||
|
||
[packages]
|
||
# Red Bear OS branding
|
||
redbear-release = {}
|
||
|
||
# Exclude inherited legacy desktop packages from the tracked KWin target
|
||
orbdata = "ignore"
|
||
orbital = "ignore"
|
||
orbterm = "ignore"
|
||
orbutils = "ignore"
|
||
cosmic-edit = "ignore"
|
||
cosmic-files = "ignore"
|
||
cosmic-icons = "ignore"
|
||
cosmic-term = "ignore"
|
||
|
||
# ext4 filesystem support
|
||
ext4d = {}
|
||
|
||
# Firmware loading + Wi-Fi control plane
|
||
redbear-firmware = {}
|
||
firmware-loader = {}
|
||
redbear-wifictl = {}
|
||
|
||
# Input layer
|
||
evdevd = {}
|
||
udev-shim = {}
|
||
|
||
# D-Bus (session + system bus)
|
||
dbus = {}
|
||
redbear-sessiond = {}
|
||
redbear-dbus-services = {}
|
||
redbear-notifications = {}
|
||
redbear-upower = {}
|
||
redbear-udisks = {}
|
||
redbear-polkit = {}
|
||
|
||
# Diagnostic/runtime tooling
|
||
redbear-info = {}
|
||
redbear-hwutils = {}
|
||
redbear-netctl = {}
|
||
redbear-netctl-console = {}
|
||
redbear-netstat = {}
|
||
redbear-traceroute = {}
|
||
redbear-mtr = {}
|
||
redbear-nmap = {}
|
||
cub = {}
|
||
|
||
# Wayland protocol
|
||
libwayland = {}
|
||
wayland-protocols = {}
|
||
|
||
# Input
|
||
libxkbcommon = {}
|
||
libevdev = {}
|
||
libinput = {}
|
||
|
||
# Seat management
|
||
seatd = {}
|
||
|
||
# Qt6 stack
|
||
qtbase = {}
|
||
qtdeclarative = {}
|
||
qtsvg = {}
|
||
qtwayland = {}
|
||
|
||
# KF6 Frameworks — Tier 1 (no special deps)
|
||
kf6-extra-cmake-modules = {}
|
||
kf6-kcoreaddons = {}
|
||
kf6-kconfig = {}
|
||
kf6-ki18n = {}
|
||
kf6-kcolorscheme = {}
|
||
kf6-kauth = {}
|
||
|
||
# KF6 Frameworks — KWin session-surface chain
|
||
kf6-kwindowsystem = {}
|
||
kf6-knotifications = {}
|
||
kf6-kconfigwidgets = {}
|
||
kf6-kcrash = {}
|
||
kf6-kdbusaddons = {}
|
||
kf6-kglobalaccel = {}
|
||
kf6-kservice = {}
|
||
kf6-kpackage = {}
|
||
kf6-kiconthemes = {}
|
||
kirigami = {}
|
||
kf6-kio = {}
|
||
kf6-kdeclarative = {}
|
||
kf6-kcmutils = {}
|
||
kf6-kwayland = {}
|
||
kdecoration = {}
|
||
|
||
# KDE session surface (v2.0 Phases 3–4)
|
||
kwin = {}
|
||
|
||
# Graphics
|
||
redox-drm = {}
|
||
mesa = {}
|
||
libdrm = {}
|
||
|
||
# Firmware directory for AMD/Intel GPU blobs
|
||
[[files]]
|
||
path = "/lib/firmware/amdgpu"
|
||
data = ""
|
||
directory = true
|
||
mode = 0o755
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/12_dbus.service"
|
||
data = """
|
||
[unit]
|
||
description = "D-Bus system bus"
|
||
requires_weak = [
|
||
"00_base.target",
|
||
]
|
||
|
||
[service]
|
||
cmd = "ion"
|
||
args = [
|
||
"-c",
|
||
"mkdir -p /var/lib/dbus /run/dbus; rm -f /run/dbus/pid; dbus-uuidgen --ensure; dbus-daemon --system",
|
||
]
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/var/lib/dbus"
|
||
data = ""
|
||
directory = true
|
||
mode = 0o755
|
||
|
||
[[files]]
|
||
path = "/run/dbus"
|
||
data = ""
|
||
directory = true
|
||
mode = 0o755
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/13_seatd.service"
|
||
data = """
|
||
[unit]
|
||
description = "seatd seat management daemon"
|
||
requires_weak = [
|
||
"12_dbus.service",
|
||
"13_redbear-sessiond.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "seatd"
|
||
args = ["-l", "info"]
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/13_redbear-sessiond.service"
|
||
data = """
|
||
[unit]
|
||
description = "Red Bear session broker (org.freedesktop.login1)"
|
||
requires_weak = [
|
||
"12_dbus.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "ion"
|
||
args = [
|
||
"-c",
|
||
"redbear-sessiond",
|
||
]
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/14_redbear-upower.service"
|
||
data = """
|
||
[unit]
|
||
description = "UPower D-Bus service (org.freedesktop.UPower)"
|
||
requires_weak = [
|
||
"12_dbus.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "ion"
|
||
args = [
|
||
"-c",
|
||
"redbear-upower",
|
||
]
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/14_redbear-udisks.service"
|
||
data = """
|
||
[unit]
|
||
description = "UDisks2 D-Bus service (org.freedesktop.UDisks2)"
|
||
requires_weak = [
|
||
"12_dbus.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "ion"
|
||
args = [
|
||
"-c",
|
||
"redbear-udisks",
|
||
]
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/14_redbear-polkit.service"
|
||
data = """
|
||
[unit]
|
||
description = "PolicyKit1 D-Bus service (org.freedesktop.PolicyKit1)"
|
||
requires_weak = [
|
||
"12_dbus.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "ion"
|
||
args = [
|
||
"-c",
|
||
"redbear-polkit",
|
||
]
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/20_display.service"
|
||
data = """
|
||
[unit]
|
||
description = "Display session service (KDE session)"
|
||
requires_weak = [
|
||
"12_dbus.service",
|
||
"13_redbear-sessiond.service",
|
||
"13_seatd.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "/usr/bin/redbear-kde-session"
|
||
envs = { VT = "3" }
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/30_console.service"
|
||
data = """
|
||
[unit]
|
||
description = "Console terminals"
|
||
requires_weak = [
|
||
"29_activate_console.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "getty"
|
||
args = ["2"]
|
||
type = "oneshot_async"
|
||
respawn = true
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/29_activate_console.service"
|
||
data = """
|
||
[unit]
|
||
description = "Activate display VT"
|
||
requires_weak = [
|
||
"20_display.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "inputd"
|
||
args = ["-A", "3"]
|
||
type = "oneshot_async"
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/lib/init.d/31_debug_console.service"
|
||
data = """
|
||
[unit]
|
||
description = "Debug console"
|
||
requires_weak = [
|
||
"29_activate_console.service",
|
||
]
|
||
|
||
[service]
|
||
cmd = "getty"
|
||
args = ["/scheme/debug/no-preserve", "-J"]
|
||
type = "oneshot_async"
|
||
respawn = true
|
||
"""
|
||
|
||
[[files]]
|
||
path = "/usr/bin/redbear-kde-session"
|
||
mode = 0o755
|
||
data = """
|
||
#!/usr/bin/sh
|
||
|
||
export DISPLAY=""
|
||
export HOME="${HOME:-/home/root}"
|
||
export USER="${USER:-root}"
|
||
export LOGNAME="${LOGNAME:-$USER}"
|
||
export WAYLAND_DISPLAY="${WAYLAND_DISPLAY:-wayland-0}"
|
||
export XDG_SESSION_TYPE=wayland
|
||
export KDE_FULL_SESSION=true
|
||
export XDG_CURRENT_DESKTOP=KDE
|
||
export LIBSEAT_BACKEND=seatd
|
||
export SEATD_SOCK=/run/seatd.sock
|
||
export QT_PLUGIN_PATH="${QT_PLUGIN_PATH:-/usr/plugins}"
|
||
export QT_QPA_PLATFORM_PLUGIN_PATH="${QT_QPA_PLATFORM_PLUGIN_PATH:-/usr/plugins/platforms}"
|
||
export QML2_IMPORT_PATH="${QML2_IMPORT_PATH:-/usr/qml}"
|
||
export XCURSOR_THEME="${XCURSOR_THEME:-Pop}"
|
||
export XKB_CONFIG_ROOT="${XKB_CONFIG_ROOT:-/usr/share/X11/xkb}"
|
||
|
||
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
|
||
export XDG_RUNTIME_DIR="/tmp/run/user/$(id -u)"
|
||
fi
|
||
|
||
mkdir -p "$XDG_RUNTIME_DIR"
|
||
chmod 700 "$XDG_RUNTIME_DIR" 2>/dev/null || true
|
||
|
||
wait_for_path() {
|
||
target="$1"
|
||
attempts=0
|
||
while [ "$attempts" -lt 30 ]; do
|
||
if [ -e "$target" ]; then
|
||
return 0
|
||
fi
|
||
attempts=$((attempts + 1))
|
||
sleep 1
|
||
done
|
||
return 1
|
||
}
|
||
|
||
if ! wait_for_path /run/dbus/system_bus_socket; then
|
||
echo "system D-Bus socket did not appear" >&2
|
||
exit 1
|
||
fi
|
||
|
||
sleep 2
|
||
|
||
if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then
|
||
eval "$(dbus-launch --sh-syntax)"
|
||
fi
|
||
|
||
dbus-update-activation-environment \
|
||
DBUS_SESSION_BUS_ADDRESS \
|
||
DBUS_SESSION_BUS_PID \
|
||
WAYLAND_DISPLAY \
|
||
XDG_SESSION_ID \
|
||
XDG_SEAT \
|
||
XDG_SESSION_TYPE \
|
||
XDG_RUNTIME_DIR \
|
||
XDG_CURRENT_DESKTOP \
|
||
KDE_FULL_SESSION \
|
||
DISPLAY \
|
||
HOME \
|
||
USER
|
||
|
||
if [ -z "${KWIN_DRM_DEVICES:-}" ] && [ -e /scheme/drm/card0 ]; then
|
||
export KWIN_DRM_DEVICES=/scheme/drm/card0
|
||
fi
|
||
|
||
exec kwin_wayland_wrapper --drm
|
||
"""
|