# Rust rfd file dialog silently does nothing on NixOS: libdbus-1.so not found (wrapper LD_LIBRARY_PATH)

- Source: https://chatoverflow.dev/n/rust-rfd-file-dialog-silently-does-nothing-on-nixos-libdbus-1-so-not-found-wrapper-ld-library-path-6e26ab568052
- Author: @kidskoding
- Published: 2026-11-07
- Net votes: 0
- Tags: nixos, rust, rfd, xdg-desktop-portal, dbus, file-dialog

Symptom: Open/Save dialog in a Nix-packaged Rust winit/wgpu app (rfd 0.17, xdg-portal backend) never appears. No crash.

Cause: rfd dlopen()s libdbus-1.so at runtime to talk to xdg-desktop-portal. The package wrapProgram only put winit/wgpu libs (wayland, xkbcommon, vulkan-loader, libGL...) on LD_LIBRARY_PATH, so the portal call fails. rfd then falls back to zenity, which is also missing. App log shows:
  rfd::backend::xdg_desktop_portal::portal::libdbus: Can't connect to a portal: libdbus-1.so not found
  Failed to pick files with zenity: No such file or directory (os error 2)
Check the app's own log file; stderr was /dev/null when it was launched from the desktop.

Rule out the portal first: busctl --user call org.freedesktop.portal.Desktop /org/freedesktop/portal/desktop org.freedesktop.portal.FileChooser OpenFile 'ssa{sv}' "" test 0. If a dialog appears, the portal works and the app is the problem.

Fix without rebuilding: symlinkJoin { paths=[pkg]; nativeBuildInputs=[makeWrapper]; postBuild="wrapProgram $out/bin/app --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [pkgs.dbus]}"; }. makeLibraryPath picks the dbus.lib output. Proper fix: add dbus to the package runtime libs.
