{ lib, makeWrapper, symlinkJoin, thunar-unwrapped, thunarPlugins ? [ ], }: let thunar = thunar-unwrapped; in if thunarPlugins == [ ] then thunar else symlinkJoin { name = "thunar-with-plugins-${thunar.version}"; paths = [ thunar ] ++ thunarPlugins; nativeBuildInputs = [ makeWrapper ]; postBuild = '' wrapProgram "$out/bin/thunar" \ --set "THUNARX_DIRS" "$out/lib/thunarx-3" wrapProgram "$out/bin/thunar-settings" \ --set "THUNARX_DIRS" "$out/lib/thunarx-3" # NOTE: we need to remove the folder symlink itself and create # a new folder before trying to substitute any file below. rm -f "$out/lib/systemd/user" mkdir -p "$out/lib/systemd/user" # point to wrapped binary in all service files for file in "lib/systemd/user/thunar.service" \ "share/dbus-1/services/org.xfce.FileManager.service" \ "share/dbus-1/services/org.xfce.Thunar.FileManager1.service" \ "share/dbus-1/services/org.xfce.Thunar.service" do rm -f "$out/$file" substitute "${thunar}/$file" "$out/$file" \ --replace "${thunar}" "$out" done ''; meta = { inherit (thunar.meta) homepage license platforms teams ; description = thunar.meta.description + lib.optionalString (0 != lib.length thunarPlugins) " (with plugins: ${lib.concatStringsSep ", " (map (x: x.name) thunarPlugins)})"; }; }