diff --git a/flake.lock b/flake.lock index 84f1720..165ec30 100644 --- a/flake.lock +++ b/flake.lock @@ -40,17 +40,17 @@ "muvm-src": { "flake": false, "locked": { - "lastModified": 1769336998, - "narHash": "sha256-ZFtAYwr3AaD8WsDmXJ6eU12UojzfMm50UBWmWIXstl0=", + "lastModified": 1772176363, + "narHash": "sha256-aSWulv3ml4XmMYnFOkZCd2YBLIY0Rr8CUHK1NDYk5jw=", "owner": "valpackett", "repo": "muvm", - "rev": "ae7dbd49aac04e9732a14a424572e99a81eb1298", + "rev": "c68742bcedb96deb6f23ed5a83188022d1cdf71d", "type": "github" }, "original": { "owner": "valpackett", "repo": "muvm", - "rev": "ae7dbd49aac04e9732a14a424572e99a81eb1298", + "rev": "c68742bcedb96deb6f23ed5a83188022d1cdf71d", "type": "github" } }, @@ -89,10 +89,10 @@ ] }, "locked": { - "lastModified": 1770365107, - "narHash": "sha256-rp2hDKF3pwHN0lBr09ckMNaMSJnwNolQmiad8C7u41Q=", + "lastModified": 1772183103, + "narHash": "sha256-9jbqBtaLUdOeT95PVUMz45JdUpVeJ25ZYZHEOQn9XsI=", "ref": "main", - "rev": "26261306592f6173fb844083b396bebf8140cb2b", + "rev": "c42eaef55440e2594677ede5279bd8c3eaf128f2", "shallow": true, "type": "git", "url": "https://git.clan.lol/clan/sidebus" diff --git a/flake.nix b/flake.nix index 84c3166..e7904a2 100644 --- a/flake.nix +++ b/flake.nix @@ -16,7 +16,7 @@ # To override with local checkouts during development, use the --override-input CLI flag! muvm-src = { - url = "github:valpackett/muvm/ae7dbd49aac04e9732a14a424572e99a81eb1298"; # v0.5.0+custom-init + url = "github:valpackett/muvm/c68742bcedb96deb6f23ed5a83188022d1cdf71d"; # v0.5.0+custom-init+dbus flake = false; }; libkrun-src = { @@ -49,7 +49,7 @@ flake = { nixosModules.testvm = nixpkgs.lib.modules.importApply ./nixosModules/testvm.nix { }; nixosModules.default = nixpkgs.lib.modules.importApply ./nixosModules/default.nix { - inherit self sidebus; + inherit self; }; templates.musictest = { @@ -124,8 +124,6 @@ sidebus-broker = sidebus.packages.${system}.sidebus-broker; }; - sidebus-agent = sidebus.packages.${system}.sidebus-agent; - wl-cross-domain-proxy = pkgs.callPackage ./packages/wl-cross-domain-proxy { }; }; diff --git a/munix b/munix index 4f26980..ecd7920 100755 --- a/munix +++ b/munix @@ -10,6 +10,7 @@ MICROVM_UID=1337 MICROVM_GID=1337 BWRAP_ARGS=() MUVM_ARGS=() +SIDEBUS_ARGS=() GPU=1 WAYLAND=1 PIPEWIRE=1 @@ -31,10 +32,10 @@ while [ "$#" -gt 0 ]; do --no-pipewire) PIPEWIRE=0; shift 1;; --no-env-defaults) ENV_DEFAULTS=0; shift 1;; --x11) X11=1; shift 1;; - -b|--bind) BWRAP_ARGS+=("--bind" "$2" "$3"); shift 3;; - --ro-bind) BWRAP_ARGS+=("--ro-bind" "$2" "$3"); shift 3;; - -e|--expose) BWRAP_ARGS+=("--bind" "$2" "$2"); shift 2;; - --ro-expose) BWRAP_ARGS+=("--ro-bind" "$2" "$2"); shift 2;; + -b|--bind) BWRAP_ARGS+=("--bind" "$2" "$3"); SIDEBUS_ARGS+=("--path-mapping" "$3=$2"); shift 3;; + --ro-bind) BWRAP_ARGS+=("--ro-bind" "$2" "$3"); SIDEBUS_ARGS+=("--path-mapping" "$3=$2"); shift 3;; + -e|--expose) BWRAP_ARGS+=("--bind" "$2" "$2"); SIDEBUS_ARGS+=("--path-mapping" "$2=$2"); shift 2;; + --ro-expose) BWRAP_ARGS+=("--ro-bind" "$2" "$2"); SIDEBUS_ARGS+=("--path-mapping" "$2=$2"); shift 2;; -p|--publish) USING_PUBLISH=1; MUVM_ARGS+=("--publish=$2"); shift 2;; --host-opengl-driver) HOST_OPENGL_DRIVER="$2"; shift 2;; --munix-bin-dir) SCRIPT_PATH="$2"; shift 2;; @@ -186,12 +187,20 @@ trap cleanup EXIT INT TERM HOST_RUNTIME_DIR="$XDG_RUNTIME_DIR/munix.$$" mkdir -p $HOST_RUNTIME_DIR rm $HOST_RUNTIME_DIR/* -sidebus-broker --guest-mountpoint /mnt/munix-doc-portal/doc --runtime-dir "$HOST_RUNTIME_DIR" --unix-path "$HOST_RUNTIME_DIR/port.sock" >/dev/null 2>&1 & +mkdir -p "$HOST_RUNTIME_DIR/home" +RUST_LOG=debug sidebus-broker \ + --path-mapping "/home=$HOST_RUNTIME_DIR/home" \ + "${SIDEBUS_ARGS[@]}" \ + --guest-mountpoint /mnt/munix-doc-portal/doc \ + --runtime-dir "$HOST_RUNTIME_DIR" \ + --unix-path "$HOST_RUNTIME_DIR/port.sock" & # >/dev/null 2>&1 & BG_PIDS+=("$!") while [ ! -S "$HOST_RUNTIME_DIR/port.sock" ]; do sleep 0.1; done -BWRAP_ARGS+=( +BWRAP_ARGS=( # prepend home mount before other mounts to not override custom bind mounts under /home + --bind "$HOST_RUNTIME_DIR/home" /home + "${BWRAP_ARGS[@]}" --bind "$HOST_RUNTIME_DIR" /mnt/munix-doc-portal - --bind "$HOST_RUNTIME_DIR/port.sock" "$XDG_RUNTIME_DIR/krun/socket/port-50000" + --setenv "RUTABAGA_DBUS_CLIENT_SOCKET" /mnt/munix-doc-portal/port.sock ) if [ "$ENV_DEFAULTS" -eq 1 ]; then MUVM_ARGS+=( @@ -221,6 +230,7 @@ bwrap --unshare-all --share-net \ --ro-bind "$MUVM_PATH/muvm-guest" /opt/bin/muvm-remote \ --ro-bind "$MUVM_PATH/muvm-guest" /opt/bin/muvm-configure-network \ --ro-bind "$MUVM_PATH/muvm-guest" /opt/bin/muvm-pwbridge \ + --ro-bind "$MUVM_PATH/muvm-guest" /opt/bin/muvm-dbusbridge \ --symlink "$MICROVM_CLOSURE/etc" /etc \ --symlink "$MICROVM_CLOSURE/sw/bin/sh" /bin/sh \ --symlink "$MICROVM_CLOSURE/sw/bin/env" /usr/bin/env \ @@ -232,7 +242,7 @@ bwrap --unshare-all --share-net \ --setenv PATH "/run/munix/muvm:/run/munix/passt:$MICROVM_CLOSURE/sw/bin" \ "${BWRAP_ARGS[@]}" \ muvm \ - --custom-init-cmdline "/opt/bin/micro-activate $MICROVM_CLOSURE/sw/sbin/init --log-target=console systemd.set_credential=sidebus.port:50000" \ + --custom-init-cmdline "/opt/bin/micro-activate $MICROVM_CLOSURE/sw/sbin/init --log-target=console" \ "${MUVM_ARGS[@]}" \ -e container=munix \ -e MICROVM_CLOSURE="$MICROVM_CLOSURE" \ diff --git a/nixosModules/default.nix b/nixosModules/default.nix index 15a5a08..e670144 100644 --- a/nixosModules/default.nix +++ b/nixosModules/default.nix @@ -1,6 +1,5 @@ { self, - sidebus, }: { pkgs, @@ -282,16 +281,16 @@ in Group = "appvm"; }; }; - systemd.services.sidebus-agent = { + systemd.services.session-bus-bridge = { enable = true; description = "D-Bus session bus"; wantedBy = ["microvm.target"]; requires = ["session-bus.socket" "session-bus.service"]; after = ["session-bus.service"]; serviceConfig = { - ImportCredential = "sidebus.port"; Environment = ["DBUS_SESSION_BUS_ADDRESS=unix:path=${runtimeDir}/dbus.sock"]; - ExecStart = "${sidebus.packages.${system}.sidebus-agent}/bin/sidebus-agent"; + ExecStartPre = "+/run/current-system/sw/bin/chmod 0666 /dev/dri/card0 /dev/dri/renderD128"; + ExecStart = "/opt/bin/muvm-dbusbridge"; User = "appvm"; Group = "appvm"; };