feat: zsh as default shell, pkgar staging fix

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/<target>/<pkg>.pkgar. This fixes the
kf6-kitemviews build failure where libwayland's pkgar was missing from
the target directory.
This commit is contained in:
2026-05-03 10:55:46 +01:00
parent 466b68a643
commit 5862255060
5 changed files with 94 additions and 10 deletions
+2 -2
View File
@@ -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]
+77 -6
View File
@@ -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
"""
+1 -1
View File
@@ -18,7 +18,7 @@ uid = 101
gid = 101
name = "greeter"
home = "/nonexistent"
shell = "/usr/bin/ion"
shell = "/usr/bin/zsh"
[groups.greeter]
gid = 101
+1 -1
View File
@@ -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.
+13
View File
@@ -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))?;