From 2776566e816984f90cbfe31bdd75323734d67d2d Mon Sep 17 00:00:00 2001 From: Vasilito Date: Tue, 14 Apr 2026 22:53:24 +0100 Subject: [PATCH] Wire native network tools into Red Bear profiles Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- config/redbear-desktop.toml | 84 +++++++++- config/redbear-full.toml | 67 +++++++- config/redbear-kde.toml | 80 +++++---- config/redbear-minimal.toml | 14 ++ .../system/redbear-info/source/src/main.rs | 155 ++++++++++++++++-- local/scripts/apply-patches.sh | 49 ++++++ local/scripts/integrate-redbear.sh | 49 ++++++ 7 files changed, 449 insertions(+), 49 deletions(-) diff --git a/config/redbear-desktop.toml b/config/redbear-desktop.toml index 8eb0f12c..bf322bd2 100644 --- a/config/redbear-desktop.toml +++ b/config/redbear-desktop.toml @@ -4,7 +4,7 @@ # Build: make all CONFIG_NAME=redbear-desktop # Live: make live CONFIG_NAME=redbear-desktop -include = ["desktop.toml", "redbear-netctl.toml"] +include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.toml", "redbear-device-services.toml", "redbear-netctl.toml"] [general] filesystem_size = 10240 @@ -19,8 +19,90 @@ redbear-hwutils = {} # Redox-native netctl compatibility command redbear-netctl = {} +# Native network reporting and connect-scan tools +redbear-netstat = {} +redbear-traceroute = {} +redbear-mtr = {} +redbear-nmap = {} + +# Firmware loading +firmware-loader = {} + +# Input/runtime service prerequisites +evdevd = {} +udev-shim = {} + +# Diagnostic tool +redbear-info = {} + +# IOMMU validation surface +iommu = {} + # Terminal file manager (Midnight Commander port) mc = {} # Package builder (cub -S/-B/-G CLI) cub = {} + + +# ── Desktop services (replace legacy desktop-minimal init scripts) ─────────── + +[[files]] +path = "/usr/lib/init.d/20_orbital.service" +data = """ +[unit] +description = "Orbital display server" +requires_weak = [ + "10_net.target", +] + +[service] +cmd = "orbital" +args = ["orblogin", "launcher"] +envs = { VT = "3" } +type = "oneshot_async" +""" + +[[files]] +path = "/usr/lib/init.d/30_console.service" +data = """ +[unit] +description = "Console terminals" +requires_weak = [ + "20_orbital.service", +] + +[service] +cmd = "getty" +args = ["2"] +type = "oneshot_async" +""" + +[[files]] +path = "/usr/lib/init.d/31_debug_console.service" +data = """ +[unit] +description = "Debug console" +requires_weak = [ + "20_orbital.service", +] + +[service] +cmd = "getty" +args = ["/scheme/debug/no-preserve", "-J"] +type = "oneshot_async" +""" + +[[files]] +path = "/usr/lib/init.d/13_iommu.service" +data = """ +[unit] +description = "IOMMU DMA remapping daemon" +requires_weak = [ + "00_pcid-spawner.service", +] + +[service] +cmd = "/usr/lib/drivers/iommu" +type = "oneshot_async" +""" diff --git a/config/redbear-full.toml b/config/redbear-full.toml index 0da730f3..eff607a6 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -14,6 +14,13 @@ include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.t [general] filesystem_size = 2048 +[users.messagebus] +uid = 100 +gid = 100 +name = "messagebus" +home = "/nonexistent" +shell = "/usr/bin/ion" + [packages] # Red Bear OS branding (os-release, hostname, motd) redbear-release = {} @@ -24,6 +31,12 @@ redbear-hwutils = {} # Redox-native netctl compatibility command redbear-netctl = {} +# Native network reporting and connect-scan tools +redbear-netstat = {} +redbear-traceroute = {} +redbear-mtr = {} +redbear-nmap = {} + # Terminal file manager (Midnight Commander port) mc = {} @@ -37,9 +50,15 @@ firmware-loader = {} evdevd = {} udev-shim = {} +# Desktop/session plumbing +dbus = {} + # Diagnostic tool redbear-info = {} +# IOMMU validation surface +iommu = {} + # Process monitor htop = {} @@ -55,10 +74,6 @@ qtbase = {} # RBOS meta-package — temporarily disabled (depends on GPU stack via redox-driver-sys) # redbear-meta = {} -# Workaround: bash fails to cross-compile (upstream mkbuiltins.c issue) -# ion (from minimal) is the default shell anyway -bash = "ignore" - # Firmware directory for AMD/Intel GPU blobs [[files]] path = "/usr/firmware/amdgpu" @@ -117,3 +132,47 @@ cmd = "getty" args = ["/scheme/debug/no-preserve", "-J"] type = "oneshot_async" """ + +[[files]] +path = "/usr/lib/init.d/12_dbus.service" +data = """ +[unit] +description = "D-Bus system bus" +requires_weak = [ + "10_net.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_iommu.service" +data = """ +[unit] +description = "IOMMU DMA remapping daemon" +requires_weak = [ + "00_pcid-spawner.service", +] + +[service] +cmd = "/usr/lib/drivers/iommu" +type = "oneshot_async" +""" diff --git a/config/redbear-kde.toml b/config/redbear-kde.toml index 7eb35fb1..e0e4bc2b 100644 --- a/config/redbear-kde.toml +++ b/config/redbear-kde.toml @@ -10,6 +10,13 @@ include = ["desktop.toml", "redbear-legacy-base.toml", "redbear-legacy-desktop.t [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 = {} @@ -27,6 +34,15 @@ udev-shim = {} # D-Bus (session + system bus) dbus = {} +# Diagnostic/runtime tooling +redbear-info = {} +redbear-hwutils = {} +redbear-netctl = {} +redbear-netstat = {} +redbear-traceroute = {} +redbear-mtr = {} +redbear-nmap = {} + # Wayland protocol libwayland = {} wayland-protocols = {} @@ -48,58 +64,35 @@ qtwayland = {} # KF6 Frameworks — Tier 1 (no special deps) kf6-extra-cmake-modules = {} kf6-kcoreaddons = {} -kf6-kwidgetsaddons = {} kf6-kconfig = {} kf6-ki18n = {} -kf6-kcodecs = {} -kf6-kguiaddons = {} kf6-kcolorscheme = {} kf6-kauth = {} -kf6-kitemmodels = {} -kf6-kitemviews = {} -# KF6 Frameworks — Tier 2 -kf6-karchive = {} +# KF6 Frameworks — KWin session-surface chain kf6-kwindowsystem = {} kf6-knotifications = {} -kf6-kjobwidgets = {} kf6-kconfigwidgets = {} - -# KF6 Frameworks — Tier 3 (needs D-Bus) kf6-kcrash = {} kf6-kdbusaddons = {} kf6-kglobalaccel = {} kf6-kservice = {} kf6-kpackage = {} kf6-kiconthemes = {} -kf6-kxmlgui = {} -kf6-ktextwidgets = {} -kf6-kirigami = {} -kf6-solid = {} -kf6-sonnet = {} - -# KF6 Frameworks — Tier 4 (needs kio + kxmlgui) +kirigami = {} kf6-kio = {} -kf6-kbookmarks = {} -kf6-kcompletion = {} kf6-kdeclarative = {} kf6-kcmutils = {} -plasma-framework = {} +kf6-kwayland = {} +kdecoration = {} -# KDE Plasma +# KDE session surface (Phase 6 slice) kwin = {} -plasma-workspace = {} -plasma-desktop = {} -breeze = {} -kde-cli-tools = {} # Graphics mesa = {} libdrm = {} -# Workaround: bash fails to cross-compile -bash = "ignore" - # Firmware directory for AMD/Intel GPU blobs [[files]] path = "/usr/firmware/amdgpu" @@ -123,6 +116,30 @@ args = ["--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 = "/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 = """ @@ -191,8 +208,7 @@ type = "oneshot_async" path = "/usr/bin/orbital-kde" mode = 0o755 data = """ -#!/usr/bin/env bash -set -ex +#!/usr/bin/sh export DISPLAY="" export WAYLAND_DISPLAY=wayland-0 @@ -222,6 +238,6 @@ kwin_wayland --replace & sleep 2 -# Start Plasma Shell -plasmashell & +# Start KWin Wayland compositor +kwin_wayland --replace """ diff --git a/config/redbear-minimal.toml b/config/redbear-minimal.toml index b051e47c..9c1b40ec 100644 --- a/config/redbear-minimal.toml +++ b/config/redbear-minimal.toml @@ -18,9 +18,23 @@ redbear-hwutils = {} # Redox-native netctl compatibility command redbear-netctl = {} +# Native network reporting and connect-scan tools +redbear-netstat = {} +redbear-traceroute = {} +redbear-mtr = {} +redbear-nmap = {} + +# Firmware loading +firmware-loader = {} + +# Input/runtime service prerequisites +evdevd = {} +udev-shim = {} + # Terminal file manager mc = {} + # Diagnostic tool redbear-info = {} diff --git a/local/recipes/system/redbear-info/source/src/main.rs b/local/recipes/system/redbear-info/source/src/main.rs index 81b227f6..4056fe75 100644 --- a/local/recipes/system/redbear-info/source/src/main.rs +++ b/local/recipes/system/redbear-info/source/src/main.rs @@ -1,5 +1,6 @@ use std::env; use std::fs; +use std::io::Read; use std::path::PathBuf; use std::process; @@ -141,6 +142,46 @@ const INTEGRATIONS: &[IntegrationCheck] = &[ note: "Profiles and active profile tracking are readable; profile application remains a separate runtime action.", functional_probe: Some(probe_netctl_surface), }, + IntegrationCheck { + name: "redbear-netstat", + category: "Tool", + description: "Native Red Bear network status reporter", + artifact_path: Some("/usr/bin/redbear-netstat"), + control_path: Some("/scheme/netcfg"), + test_hint: "redbear-netstat", + note: "Functional when the netcfg scheme answers read-only interface, route, and resolver queries.", + functional_probe: Some(probe_smolnetd_surface), + }, + IntegrationCheck { + name: "redbear-traceroute", + category: "Tool", + description: "Native UDP-based path tracing utility", + artifact_path: Some("/usr/bin/redbear-traceroute"), + control_path: Some("/scheme/icmp"), + test_hint: "redbear-traceroute 1.1.1.1", + note: "Binary presence proves installation; successful hop tracing still depends on the live ICMP and UDP path in the current runtime.", + functional_probe: Some(probe_icmp_surface), + }, + IntegrationCheck { + name: "redbear-mtr", + category: "Tool", + description: "Native path measurement tool built on traceroute probes", + artifact_path: Some("/usr/bin/redbear-mtr"), + control_path: Some("/scheme/icmp"), + test_hint: "redbear-mtr 1.1.1.1", + note: "Binary presence proves installation; useful measurements still depend on the same live ICMP and UDP probe substrate as traceroute.", + functional_probe: Some(probe_icmp_surface), + }, + IntegrationCheck { + name: "redbear-nmap", + category: "Tool", + description: "Bounded TCP connect-scan utility", + artifact_path: Some("/usr/bin/redbear-nmap"), + control_path: Some("/scheme/netcfg"), + test_hint: "redbear-nmap 127.0.0.1 22,80,443", + note: "Binary presence proves the scanner is installed; successful scans still depend on live networking and reachable targets.", + functional_probe: Some(probe_smolnetd_surface), + }, IntegrationCheck { name: "pcid-spawner", category: "Core", @@ -161,6 +202,16 @@ const INTEGRATIONS: &[IntegrationCheck] = &[ note: "Functional when the netcfg scheme answers read-only queries.", functional_probe: Some(probe_smolnetd_surface), }, + IntegrationCheck { + name: "xhcid", + category: "USB", + description: "xHCI host-controller daemon", + artifact_path: Some("/usr/lib/drivers/xhcid"), + control_path: Some("/scheme"), + test_hint: "lsusb", + note: "Functional when at least one usb.* controller scheme is registered.", + functional_probe: Some(probe_usb_surface), + }, IntegrationCheck { name: "dhcpd", category: "Networking", @@ -186,30 +237,40 @@ const INTEGRATIONS: &[IntegrationCheck] = &[ category: "System", description: "Firmware indexing and serving daemon", artifact_path: Some("/usr/bin/firmware-loader"), - control_path: Some("/scheme/firmware"), + control_path: Some("/scheme"), test_hint: "ls /scheme/firmware/", note: "Functional when the firmware scheme is enumerable.", - functional_probe: Some(probe_directory_readable), + functional_probe: Some(probe_firmware_scheme), + }, + IntegrationCheck { + name: "iommu", + category: "System", + description: "IOMMU DMA-remapping daemon", + artifact_path: Some("/usr/lib/drivers/iommu"), + control_path: Some("/scheme"), + test_hint: "redbear-phase-iommu-check", + note: "Functional when the iommu scheme is registered in /scheme.", + functional_probe: Some(probe_iommu_scheme), }, IntegrationCheck { name: "udev-shim", category: "System", description: "udev-compatible device enumeration shim", - artifact_path: Some("/usr/bin/udev"), - control_path: Some("/scheme/udev"), + artifact_path: Some("/usr/bin/udev-shim"), + control_path: Some("/scheme"), test_hint: "ls /scheme/udev/", note: "Functional when the udev scheme can be listed.", - functional_probe: Some(probe_directory_readable), + functional_probe: Some(probe_udev_scheme), }, IntegrationCheck { name: "evdevd", category: "Input", description: "Event-device translation daemon", - artifact_path: Some("/usr/lib/drivers/evdevd"), - control_path: Some("/scheme/evdev"), + artifact_path: Some("/usr/bin/evdevd"), + control_path: Some("/scheme"), test_hint: "ls /scheme/evdev/", note: "Functional when event nodes are enumerable through the evdev scheme.", - functional_probe: Some(probe_directory_readable), + functional_probe: Some(probe_evdev_scheme), }, IntegrationCheck { name: "redox-drm", @@ -431,7 +492,7 @@ fn collect_hardware(runtime: &Runtime, network: &NetworkReport) -> HardwareRepor let rtl8125_present = pci_entries.into_iter().any(|entry| { let config_path = format!("/scheme/pci/{entry}/config"); - let Some(bytes) = read_bytes(runtime, &config_path) else { + let Some(bytes) = read_prefix_bytes(runtime, &config_path, 4) else { return false; }; if bytes.len() < 4 { @@ -451,7 +512,7 @@ fn collect_hardware(runtime: &Runtime, network: &NetworkReport) -> HardwareRepor .into_iter() .any(|entry| { let config_path = format!("/scheme/pci/{entry}/config"); - let Some(bytes) = read_bytes(runtime, &config_path) else { + let Some(bytes) = read_prefix_bytes(runtime, &config_path, 4) else { return false; }; if bytes.len() < 4 { @@ -976,8 +1037,12 @@ fn read_trimmed(runtime: &Runtime, path: &str) -> Option { .filter(|value| !value.is_empty()) } -fn read_bytes(runtime: &Runtime, path: &str) -> Option> { - fs::read(runtime.resolve(path)).ok() +fn read_prefix_bytes(runtime: &Runtime, path: &str, max_len: usize) -> Option> { + let mut file = fs::File::open(runtime.resolve(path)).ok()?; + let mut bytes = vec![0_u8; max_len]; + let read = file.read(&mut bytes).ok()?; + bytes.truncate(read); + Some(bytes) } fn parse_default_route(routes: &str) -> Option { @@ -1019,6 +1084,18 @@ fn probe_usb_surface( }) } +fn probe_icmp_surface( + runtime: &Runtime, + _network: &NetworkReport, + _hardware: &HardwareReport, + _check: &IntegrationCheck, +) -> Option { + runtime + .read_dir_names("/scheme") + .filter(|entries| entries.iter().any(|name| name == "icmp")) + .map(|_| "icmp scheme is present for probe/error reporting".to_string()) +} + fn probe_netctl_surface( runtime: &Runtime, network: &NetworkReport, @@ -1055,6 +1132,50 @@ fn probe_smolnetd_surface( }) } +fn probe_named_scheme(runtime: &Runtime, scheme_name: &str) -> Option { + let names = runtime.read_dir_names("/scheme")?; + names + .into_iter() + .any(|name| name == scheme_name) + .then(|| format!("scheme {scheme_name} is registered in /scheme")) +} + +fn probe_firmware_scheme( + runtime: &Runtime, + _network: &NetworkReport, + _hardware: &HardwareReport, + _check: &IntegrationCheck, +) -> Option { + probe_named_scheme(runtime, "firmware") +} + +fn probe_udev_scheme( + runtime: &Runtime, + _network: &NetworkReport, + _hardware: &HardwareReport, + _check: &IntegrationCheck, +) -> Option { + probe_named_scheme(runtime, "udev") +} + +fn probe_evdev_scheme( + runtime: &Runtime, + _network: &NetworkReport, + _hardware: &HardwareReport, + _check: &IntegrationCheck, +) -> Option { + probe_named_scheme(runtime, "evdev") +} + +fn probe_iommu_scheme( + runtime: &Runtime, + _network: &NetworkReport, + _hardware: &HardwareReport, + _check: &IntegrationCheck, +) -> Option { + probe_named_scheme(runtime, "iommu") +} + fn probe_rtl8125_path( _runtime: &Runtime, network: &NetworkReport, @@ -1382,6 +1503,8 @@ mod tests { "PRETTY_NAME=\"Red Bear OS\"\nVERSION_ID=\"0.1.0\"\n", ); write_file(&root, "/usr/bin/redbear-info", ""); + write_file(&root, "/usr/bin/redbear-netstat", ""); + write_file(&root, "/usr/bin/redbear-nmap", ""); create_dir(&root, "/scheme/netcfg"); write_file( &root, @@ -1405,6 +1528,14 @@ mod tests { .integrations .iter() .any(|item| item.check.name == "redbear-info")); + assert!(report + .integrations + .iter() + .any(|item| item.check.name == "redbear-netstat")); + assert!(report + .integrations + .iter() + .any(|item| item.check.name == "redbear-nmap")); fs::remove_dir_all(root).unwrap(); } diff --git a/local/scripts/apply-patches.sh b/local/scripts/apply-patches.sh index 11c70135..2cc77033 100755 --- a/local/scripts/apply-patches.sh +++ b/local/scripts/apply-patches.sh @@ -98,7 +98,12 @@ symlink "../../local/recipes/system/evdevd" "recipes/system/evdevd" symlink "../../local/recipes/system/firmware-loader" "recipes/system/firmware-loader" symlink "../../local/recipes/system/iommu" "recipes/system/iommu" symlink "../../local/recipes/system/redbear-hwutils" "recipes/system/redbear-hwutils" +symlink "../../local/recipes/system/redbear-info" "recipes/system/redbear-info" +symlink "../../local/recipes/system/redbear-netstat" "recipes/system/redbear-netstat" symlink "../../local/recipes/system/redbear-netctl" "recipes/system/redbear-netctl" +symlink "../../local/recipes/system/redbear-traceroute" "recipes/system/redbear-traceroute" +symlink "../../local/recipes/system/redbear-mtr" "recipes/system/redbear-mtr" +symlink "../../local/recipes/system/redbear-nmap" "recipes/system/redbear-nmap" symlink "../../local/recipes/system/redbear-meta" "recipes/system/redbear-meta" symlink "../../local/recipes/system/udev-shim" "recipes/system/udev-shim" @@ -106,6 +111,50 @@ symlink "../../local/recipes/system/udev-shim" "recipes/system/udev-shim" mkdir -p recipes/core symlink "../../local/recipes/core/ext4d" "recipes/core/ext4d" +# KDE / Phase 6 recipes +mkdir -p recipes/kde +symlink "../../local/recipes/kde/plasma-desktop" "recipes/kde/plasma-desktop" +symlink "../../local/recipes/kde/plasma-workspace" "recipes/kde/plasma-workspace" +symlink "../../local/recipes/kde/plasma-framework" "recipes/kde/plasma-framework" +symlink "../../local/recipes/kde/plasma-wayland-protocols" "recipes/kde/plasma-wayland-protocols" +symlink "../../local/recipes/kde/kwin" "recipes/kde/kwin" +symlink "../../local/recipes/kde/kirigami" "recipes/kde/kirigami" +symlink "../../local/recipes/kde/kirigami" "recipes/kde/kf6-kirigami" +symlink "../../local/recipes/kde/kdecoration" "recipes/kde/kdecoration" +symlink "../../local/recipes/kde/kf6-extra-cmake-modules" "recipes/kde/kf6-extra-cmake-modules" +symlink "../../local/recipes/kde/kf6-kcoreaddons" "recipes/kde/kf6-kcoreaddons" +symlink "../../local/recipes/kde/kf6-kwidgetsaddons" "recipes/kde/kf6-kwidgetsaddons" +symlink "../../local/recipes/kde/kf6-kconfig" "recipes/kde/kf6-kconfig" +symlink "../../local/recipes/kde/kf6-ki18n" "recipes/kde/kf6-ki18n" +symlink "../../local/recipes/kde/kf6-kcodecs" "recipes/kde/kf6-kcodecs" +symlink "../../local/recipes/kde/kf6-kguiaddons" "recipes/kde/kf6-kguiaddons" +symlink "../../local/recipes/kde/kf6-kcolorscheme" "recipes/kde/kf6-kcolorscheme" +symlink "../../local/recipes/kde/kf6-kauth" "recipes/kde/kf6-kauth" +symlink "../../local/recipes/kde/kf6-kitemmodels" "recipes/kde/kf6-kitemmodels" +symlink "../../local/recipes/kde/kf6-kitemviews" "recipes/kde/kf6-kitemviews" +symlink "../../local/recipes/kde/kf6-karchive" "recipes/kde/kf6-karchive" +symlink "../../local/recipes/kde/kf6-kwindowsystem" "recipes/kde/kf6-kwindowsystem" +symlink "../../local/recipes/kde/kf6-knotifications" "recipes/kde/kf6-knotifications" +symlink "../../local/recipes/kde/kf6-kjobwidgets" "recipes/kde/kf6-kjobwidgets" +symlink "../../local/recipes/kde/kf6-kconfigwidgets" "recipes/kde/kf6-kconfigwidgets" +symlink "../../local/recipes/kde/kf6-kcrash" "recipes/kde/kf6-kcrash" +symlink "../../local/recipes/kde/kf6-kdbusaddons" "recipes/kde/kf6-kdbusaddons" +symlink "../../local/recipes/kde/kf6-kglobalaccel" "recipes/kde/kf6-kglobalaccel" +symlink "../../local/recipes/kde/kf6-kservice" "recipes/kde/kf6-kservice" +symlink "../../local/recipes/kde/kf6-kpackage" "recipes/kde/kf6-kpackage" +symlink "../../local/recipes/kde/kf6-kiconthemes" "recipes/kde/kf6-kiconthemes" +symlink "../../local/recipes/kde/kf6-kxmlgui" "recipes/kde/kf6-kxmlgui" +symlink "../../local/recipes/kde/kf6-ktextwidgets" "recipes/kde/kf6-ktextwidgets" +symlink "../../local/recipes/kde/kf6-solid" "recipes/kde/kf6-solid" +symlink "../../local/recipes/kde/kf6-sonnet" "recipes/kde/kf6-sonnet" +symlink "../../local/recipes/kde/kf6-kio" "recipes/kde/kf6-kio" +symlink "../../local/recipes/kde/kf6-kbookmarks" "recipes/kde/kf6-kbookmarks" +symlink "../../local/recipes/kde/kf6-kcompletion" "recipes/kde/kf6-kcompletion" +symlink "../../local/recipes/kde/kf6-kdeclarative" "recipes/kde/kf6-kdeclarative" +symlink "../../local/recipes/kde/kf6-kcmutils" "recipes/kde/kf6-kcmutils" +symlink "../../local/recipes/kde/kf6-kidletime" "recipes/kde/kf6-kidletime" +symlink "../../local/recipes/kde/kf6-kwayland" "recipes/kde/kf6-kwayland" + # ── 4. New files not in upstream ──────────────────────────────────── echo "==> Ensuring Red Bear OS-specific files exist..." diff --git a/local/scripts/integrate-redbear.sh b/local/scripts/integrate-redbear.sh index 0e774eb3..6c9aa5f9 100755 --- a/local/scripts/integrate-redbear.sh +++ b/local/scripts/integrate-redbear.sh @@ -143,12 +143,60 @@ symlink "../../local/recipes/system/evdevd" "recipes/system/evdevd" symlink "../../local/recipes/system/firmware-loader" "recipes/system/firmware-loader" symlink "../../local/recipes/system/redbear-info" "recipes/system/redbear-info" symlink "../../local/recipes/system/redbear-hwutils" "recipes/system/redbear-hwutils" +symlink "../../local/recipes/system/redbear-netstat" "recipes/system/redbear-netstat" symlink "../../local/recipes/system/redbear-netctl" "recipes/system/redbear-netctl" +symlink "../../local/recipes/system/redbear-traceroute" "recipes/system/redbear-traceroute" +symlink "../../local/recipes/system/redbear-mtr" "recipes/system/redbear-mtr" +symlink "../../local/recipes/system/redbear-nmap" "recipes/system/redbear-nmap" symlink "../../local/recipes/system/redbear-meta" "recipes/system/redbear-meta" symlink "../../local/recipes/system/udev-shim" "recipes/system/udev-shim" symlink "../../local/recipes/core/ext4d" "recipes/core/ext4d" symlink "../../local/recipes/tui/mc" "recipes/tui/mc" symlink "../../local/recipes/system/cub" "recipes/system/cub" + +# KDE / Phase 6 recipes +mkdir -p recipes/kde +symlink "../../local/recipes/kde/plasma-desktop" "recipes/kde/plasma-desktop" +symlink "../../local/recipes/kde/plasma-workspace" "recipes/kde/plasma-workspace" +symlink "../../local/recipes/kde/plasma-framework" "recipes/kde/plasma-framework" +symlink "../../local/recipes/kde/plasma-wayland-protocols" "recipes/kde/plasma-wayland-protocols" +symlink "../../local/recipes/kde/kwin" "recipes/kde/kwin" +symlink "../../local/recipes/kde/kirigami" "recipes/kde/kirigami" +symlink "../../local/recipes/kde/kirigami" "recipes/kde/kf6-kirigami" +symlink "../../local/recipes/kde/kdecoration" "recipes/kde/kdecoration" +symlink "../../local/recipes/kde/kf6-extra-cmake-modules" "recipes/kde/kf6-extra-cmake-modules" +symlink "../../local/recipes/kde/kf6-kcoreaddons" "recipes/kde/kf6-kcoreaddons" +symlink "../../local/recipes/kde/kf6-kwidgetsaddons" "recipes/kde/kf6-kwidgetsaddons" +symlink "../../local/recipes/kde/kf6-kconfig" "recipes/kde/kf6-kconfig" +symlink "../../local/recipes/kde/kf6-ki18n" "recipes/kde/kf6-ki18n" +symlink "../../local/recipes/kde/kf6-kcodecs" "recipes/kde/kf6-kcodecs" +symlink "../../local/recipes/kde/kf6-kguiaddons" "recipes/kde/kf6-kguiaddons" +symlink "../../local/recipes/kde/kf6-kcolorscheme" "recipes/kde/kf6-kcolorscheme" +symlink "../../local/recipes/kde/kf6-kauth" "recipes/kde/kf6-kauth" +symlink "../../local/recipes/kde/kf6-kitemmodels" "recipes/kde/kf6-kitemmodels" +symlink "../../local/recipes/kde/kf6-kitemviews" "recipes/kde/kf6-kitemviews" +symlink "../../local/recipes/kde/kf6-karchive" "recipes/kde/kf6-karchive" +symlink "../../local/recipes/kde/kf6-kwindowsystem" "recipes/kde/kf6-kwindowsystem" +symlink "../../local/recipes/kde/kf6-knotifications" "recipes/kde/kf6-knotifications" +symlink "../../local/recipes/kde/kf6-kjobwidgets" "recipes/kde/kf6-kjobwidgets" +symlink "../../local/recipes/kde/kf6-kconfigwidgets" "recipes/kde/kf6-kconfigwidgets" +symlink "../../local/recipes/kde/kf6-kcrash" "recipes/kde/kf6-kcrash" +symlink "../../local/recipes/kde/kf6-kdbusaddons" "recipes/kde/kf6-kdbusaddons" +symlink "../../local/recipes/kde/kf6-kglobalaccel" "recipes/kde/kf6-kglobalaccel" +symlink "../../local/recipes/kde/kf6-kservice" "recipes/kde/kf6-kservice" +symlink "../../local/recipes/kde/kf6-kpackage" "recipes/kde/kf6-kpackage" +symlink "../../local/recipes/kde/kf6-kiconthemes" "recipes/kde/kf6-kiconthemes" +symlink "../../local/recipes/kde/kf6-kxmlgui" "recipes/kde/kf6-kxmlgui" +symlink "../../local/recipes/kde/kf6-ktextwidgets" "recipes/kde/kf6-ktextwidgets" +symlink "../../local/recipes/kde/kf6-solid" "recipes/kde/kf6-solid" +symlink "../../local/recipes/kde/kf6-sonnet" "recipes/kde/kf6-sonnet" +symlink "../../local/recipes/kde/kf6-kio" "recipes/kde/kf6-kio" +symlink "../../local/recipes/kde/kf6-kbookmarks" "recipes/kde/kf6-kbookmarks" +symlink "../../local/recipes/kde/kf6-kcompletion" "recipes/kde/kf6-kcompletion" +symlink "../../local/recipes/kde/kf6-kdeclarative" "recipes/kde/kf6-kdeclarative" +symlink "../../local/recipes/kde/kf6-kcmutils" "recipes/kde/kf6-kcmutils" +symlink "../../local/recipes/kde/kf6-kidletime" "recipes/kde/kf6-kidletime" +symlink "../../local/recipes/kde/kf6-kwayland" "recipes/kde/kf6-kwayland" status "Custom recipe symlinks ready" echo "" @@ -168,6 +216,7 @@ declare -a redbear_configs=( "config/redbear-desktop.toml" "config/redbear-minimal.toml" "config/redbear-full.toml" + "config/redbear-wayland.toml" "config/redbear-live.toml" ) declare -a found_configs=()