Compare commits

...

2 Commits

Author SHA1 Message Date
92f510a647
cmd/hakurei/command: pd run dbus-verbose nil check
All checks were successful
Test / Create distribution (push) Successful in 26s
Test / Sandbox (push) Successful in 40s
Test / Sandbox (race detector) (push) Successful in 40s
Test / Hakurei (race detector) (push) Successful in 43s
Test / Hpkg (push) Successful in 41s
Test / Hakurei (push) Successful in 2m23s
Test / Flake checks (push) Successful in 1m33s
This otherwise dereferences a nil pointer when dbus-verbose is set and either session or system bus are nil.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-09-06 00:09:25 +09:00
acb6931f3e
app/seal: leave $DISPLAY as is on host abstract
All checks were successful
Test / Create distribution (push) Successful in 26s
Test / Hakurei (push) Successful in 42s
Test / Hakurei (race detector) (push) Successful in 42s
Test / Sandbox (race detector) (push) Successful in 40s
Test / Sandbox (push) Successful in 40s
Test / Hpkg (push) Successful in 40s
Test / Flake checks (push) Successful in 1m24s
This helps work around faulty software that misinterprets unix: DISPLAY string.

Signed-off-by: Ophestra <cat@gensokyo.uk>
2025-08-27 20:42:03 +09:00
9 changed files with 18 additions and 6 deletions

View File

@ -162,10 +162,14 @@ func buildCommand(out io.Writer) command.Command {
// override log from configuration
if dbusVerbose {
if config.SessionBus != nil {
config.SessionBus.Log = true
}
if config.SystemBus != nil {
config.SystemBus.Log = true
}
}
}
// invoke app
runApp(config)

View File

@ -418,9 +418,11 @@ func (seal *outcome) finalise(ctx context.Context, sys sys.State, config *hst.Co
}
} else {
seal.sys.UpdatePermType(system.EX11, socketPath.String(), acl.Read, acl.Write, acl.Execute)
if !config.Container.HostAbstract {
d = "unix:" + socketPath.String()
}
}
}
seal.sys.ChangeHosts("#" + seal.user.uid.String())
seal.env[display] = d

View File

@ -49,6 +49,7 @@ let
mapRealUid
useCommonPaths
userns
hostAbstract
;
enablements = {
inherit (tc) x11;

View File

@ -26,6 +26,7 @@ in
useCommonPaths = true;
userns = false;
x11 = true;
hostAbstract = false;
# 0, PresetStrict
expectedFilter = {

View File

@ -35,6 +35,7 @@ in
useCommonPaths = true;
userns = false;
x11 = false;
hostAbstract = false;
# 0, PresetStrict
expectedFilter = {

View File

@ -35,6 +35,7 @@ in
useCommonPaths = false;
userns = true;
x11 = false;
hostAbstract = false;
# 0, PresetExt | PresetDenyDevel
expectedFilter = {

View File

@ -35,6 +35,7 @@ in
useCommonPaths = false;
userns = false;
x11 = false;
hostAbstract = false;
# 0, PresetStrict
expectedFilter = {

View File

@ -35,6 +35,7 @@ in
useCommonPaths = true;
userns = false;
x11 = true;
hostAbstract = true;
# 0, PresetExt | PresetDenyNS | PresetDenyDevel
expectedFilter = {
@ -45,7 +46,7 @@ in
want = {
env = [
"DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/65534/bus"
"DISPLAY=unix:/tmp/.X11-unix/X0"
"DISPLAY=:0"
"HOME=/var/lib/hakurei/u0/a2"
"PULSE_SERVER=unix:/run/user/65534/pulse/native"
"SHELL=/run/current-system/sw/bin/bash"
@ -276,7 +277,7 @@ in
seccomp = true;
try_socket = "/tmp/.X11-unix/X0";
socket_abstract = false;
socket_abstract = true;
socket_pathname = true;
};
}

View File

@ -149,7 +149,7 @@ silent_output_interrupt("--wayland -X --dbus --pulse ")
print(machine.fail("sudo -u alice -i hakurei -v run --wayland true"))
# Start hakurei permissive defaults within Wayland session:
hakurei('-v run --wayland --dbus notify-send -a "NixOS Tests" "Test notification" "Notification from within sandbox." && touch /tmp/dbus-ok')
hakurei('-v run --wayland --dbus --dbus-log notify-send -a "NixOS Tests" "Test notification" "Notification from within sandbox." && touch /tmp/dbus-ok')
machine.wait_for_file("/tmp/dbus-ok", timeout=15)
collect_state_ui("dbus_notify_exited")
# not in pid namespace, verify termination