From 5862255060dc485570e7fcdc0dec30cfbd58f020 Mon Sep 17 00:00:00 2001 From: Vasilito Date: Sun, 3 May 2026 10:55:46 +0100 Subject: [PATCH] feat: zsh as default shell, pkgar staging fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shell: Changed default shell from ion to zsh for all user accounts in base.toml, redbear-mini.toml, redbear-full.toml, and greeter config. zsh 5.9 is already ported and builds (ZSH-PORTING-PLAN — fully implemented). ion is kept as fallback/alternative. Cookbook: pkgar staging fallback — when a dependency's target pkgar doesn't exist, fall back to repo//.pkgar. This fixes the kf6-kitemviews build failure where libwayland's pkgar was missing from the target directory. --- config/base.toml | 4 +- config/redbear-full.toml | 83 ++++++++++++++++++++++++++-- config/redbear-greeter-services.toml | 2 +- config/redbear-mini.toml | 2 +- src/cook/cook_build.rs | 13 +++++ 5 files changed, 94 insertions(+), 10 deletions(-) diff --git a/config/base.toml b/config/base.toml index e7a04f3d..aed5a07a 100644 --- a/config/base.toml +++ b/config/base.toml @@ -307,12 +307,12 @@ symlink = true password = "password" uid = 0 gid = 0 -shell = "/usr/bin/ion" +shell = "/usr/bin/zsh" [users.user] # Password is unset password = "" -shell = "/usr/bin/ion" +shell = "/usr/bin/zsh" # Group settings [groups.sudo] diff --git a/config/redbear-full.toml b/config/redbear-full.toml index e09118a3..8f061bca 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -18,7 +18,7 @@ uid = 100 gid = 100 name = "messagebus" home = "/nonexistent" -shell = "/usr/bin/ion" +shell = "/usr/bin/zsh" [users.root] shell = "/usr/bin/zsh" @@ -39,7 +39,7 @@ redox-drm = {} mesa = {} libdrm = {} -libwayland = {} +libwayland = "ignore" wayland-protocols = {} # redbear-compositor = {} @@ -47,7 +47,10 @@ wayland-protocols = {} # libxkbcommon = {} # build needed # xkeyboard-config = {} # build needed libevdev = {} -# libinput = {} # WIP: missing libepoll-shim recipe dependency +libinput = {} +redbear-keymapd = {} +redbear-ime = {} +redbear-accessibility = {} # Qt6 stack qtbase = {} @@ -184,6 +187,7 @@ data = """ description = "D-Bus system bus" requires_weak = [ "12_boot-late.target", + "00_ipcd.service", ] [service] @@ -222,6 +226,48 @@ args = ["-l", "info"] type = "oneshot_async" """ +[[files]] +path = "/usr/lib/init.d/13_redbear-keymapd.service" +data = """ +[unit] +description = "Runtime keymap daemon" +requires_weak = [ + "10_evdevd.service", +] + +[service] +cmd = "redbear-keymapd" +type = "oneshot_async" +""" + +[[files]] +path = "/usr/lib/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 = "/usr/lib/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 = "/usr/lib/init.d/14_redbear-upower.service" data = """ @@ -288,6 +334,7 @@ requires_weak = [ "12_dbus.service", "13_redbear-sessiond.service", "13_seatd.service", + "13_redbear-keymapd.service", "19_redbear-authd.service", ] @@ -308,6 +355,7 @@ requires_weak = [ "12_dbus.service", "13_redbear-sessiond.service", "13_seatd.service", + "13_redbear-keymapd.service", "19_redbear-authd.service", ] @@ -351,24 +399,41 @@ type = "oneshot_async" path = "/usr/lib/init.d/31_debug_console.service" data = """ [unit] -description = "Debug console" +description = "Debug console on serial port" requires_weak = [ "29_activate_console.service", ] [service] cmd = "getty" -args = ["/scheme/debug/no-preserve", "-J"] +args = ["/scheme/debug", "-J"] type = "oneshot_async" """ +[[files]] +path = "/usr/lib/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 = "ion" +args = ["-c", "echo BOOT_COMPLETE_SERIAL_MARKER"] +type = "oneshot" +""" + [users.greeter] password = "" uid = 101 gid = 101 name = "greeter" home = "/nonexistent" -shell = "/usr/bin/ion" +shell = "/usr/bin/zsh" [groups.greeter] gid = 101 @@ -406,3 +471,9 @@ vendor = 0x1af4 subclass = 0x00 command = ["redox-drm"] """ + +[[files]] +path = "/etc/environment.d/90-dbus.conf" +data = """ +DBUS_SYSTEM_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket +""" diff --git a/config/redbear-greeter-services.toml b/config/redbear-greeter-services.toml index 5ee08677..130056ec 100644 --- a/config/redbear-greeter-services.toml +++ b/config/redbear-greeter-services.toml @@ -18,7 +18,7 @@ uid = 101 gid = 101 name = "greeter" home = "/nonexistent" -shell = "/usr/bin/ion" +shell = "/usr/bin/zsh" [groups.greeter] gid = 101 diff --git a/config/redbear-mini.toml b/config/redbear-mini.toml index baa760c8..8611431f 100644 --- a/config/redbear-mini.toml +++ b/config/redbear-mini.toml @@ -19,7 +19,7 @@ uid = 100 gid = 100 name = "messagebus" home = "/nonexistent" -shell = "/usr/bin/ion" +shell = "/usr/bin/zsh" [packages] # Red Bear OS branding and host utilities. diff --git a/src/cook/cook_build.rs b/src/cook/cook_build.rs index 7760cd21..e83df084 100644 --- a/src/cook/cook_build.rs +++ b/src/cook/cook_build.rs @@ -605,6 +605,19 @@ fn build_deps_dir( let pkey_path = "build/id_ed25519.pub.toml"; for (name, archive_path) in dep_pkgars { + let archive_path: PathBuf = if archive_path.is_file() { + archive_path.clone() + } else { + let repo_path = std::path::PathBuf::from("repo") + .join(crate::cross_target().as_deref().unwrap_or("x86_64-unknown-redox")) + .join(format!("{}.pkgar", name.without_prefix())); + if repo_path.is_file() { + log_to_pty!(logger, "DEBUG: using repo pkgar for {}: {}", name, repo_path.display()); + repo_path + } else { + archive_path.clone() + } + }; let tag_file = tags_dir.join(name.without_prefix()); fs::write(&tag_file, "") .map_err(|e| format!("failed to write tag file {}: {:?}", tag_file.display(), e))?;