Update sidebus (now reverse-client to a session bus in the guest)

This commit is contained in:
Val Packett 2025-12-05 05:00:37 -03:00
parent bfb8352c55
commit 20e7e88e07
3 changed files with 22 additions and 13 deletions

6
flake.lock generated
View file

@ -162,10 +162,10 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1764921491, "lastModified": 1764933524,
"narHash": "sha256-bGBcDZCNu9Nq0rKnOQ5SmHMm5j9dPjggSVMI5V5XlJg=", "narHash": "sha256-yland30CesTKgckWiWNMasfotzTspQzVaDqoKbrC4Fo=",
"ref": "main", "ref": "main",
"rev": "ea34b7b08c13ca1e189a6282d0d923181db6cfb0", "rev": "52c3ea7cd36c816e00a6057e91cd945afda177d0",
"shallow": true, "shallow": true,
"type": "git", "type": "git",
"url": "https://git.clan.lol/clan/sidebus" "url": "https://git.clan.lol/clan/sidebus"

View file

@ -90,6 +90,8 @@
muvm = self.packages.${system}.muvm; muvm = self.packages.${system}.muvm;
sidebus-broker = sidebus.packages.${system}.sidebus-broker; sidebus-broker = sidebus.packages.${system}.sidebus-broker;
}; };
sidebus-agent = sidebus.packages.${system}.sidebus-agent;
}; };
devShells.default = pkgs.callPackage ./devShells { devShells.default = pkgs.callPackage ./devShells {

View file

@ -174,7 +174,7 @@ in {
PassEnvironment = ["TERM" "MESA_LOADER_DRIVER_OVERRIDE" "MUVM_REMOTE_CONFIG"]; # "KRUN_CONFIG"]; PassEnvironment = ["TERM" "MESA_LOADER_DRIVER_OVERRIDE" "MUVM_REMOTE_CONFIG"]; # "KRUN_CONFIG"];
Environment = [ Environment = [
"WAYLAND_DISPLAY=wayland-1" "WAYLAND_DISPLAY=wayland-1"
"DBUS_SESSION_BUS_ADDRESS=unix:path=${runtimeDir}/sidebus.sock" "DBUS_SESSION_BUS_ADDRESS=unix:path=${runtimeDir}/dbus.sock"
"PATH=/run/current-system/sw/bin" "PATH=/run/current-system/sw/bin"
]; ];
User = "appvm"; User = "appvm";
@ -236,28 +236,35 @@ in {
}; };
}; };
systemd.sockets.sidebus-agent = { systemd.sockets.session-bus = {
enable = true; enable = true;
description = "D-Bus cross-domain proxy socket"; description = "D-Bus session bus socket";
wantedBy = ["microvm.target"]; wantedBy = ["microvm.target"];
partOf = ["sidebus-agent.service"]; partOf = ["session-bus.service"];
listenStreams = [ "${runtimeDir}/sidebus.sock" ]; listenStreams = [ "${runtimeDir}/dbus.sock" ];
socketConfig = { socketConfig = {
SocketUser = "appvm"; SocketUser = "appvm";
SocketGroup = "appvm"; SocketGroup = "appvm";
}; };
}; };
systemd.services.sidebus-agent = { systemd.services.session-bus = {
enable = true; enable = true;
description = "D-Bus cross-domain proxy"; description = "D-Bus session bus";
requires = ["sidebus-agent.socket"]; requires = ["session-bus.socket"];
serviceConfig = { serviceConfig = {
ImportCredential = "sidebus.port"; ImportCredential = "sidebus.port"; # inherited by the activated agent..
ExecStart = "${sidebus.packages.${system}.sidebus-agent}/bin/sidebus-agent"; ExecStart = "${pkgs.dbus}/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --syslog-only"; # no systemd activation, we don't run a *session* systemd
User = "appvm"; User = "appvm";
Group = "appvm"; Group = "appvm";
}; };
}; };
services.dbus.packages = [
(pkgs.writeTextDir "/share/dbus-1/services/org.freedesktop.portal.Desktop.service" ''
[D-BUS Service]
Name=org.freedesktop.portal.Desktop
Exec=${sidebus.packages.${system}.sidebus-agent}/bin/sidebus-agent
'')
];
hardware.graphics.enable = true; hardware.graphics.enable = true;
hardware.graphics.package = self.packages.${system}.mesa; hardware.graphics.package = self.packages.${system}.mesa;