diff --git a/pkgs/applications/misc/syncthingtray/default.nix b/pkgs/applications/misc/syncthingtray/default.nix index 0b5723fdcb3f..e96cbb418b40 100644 --- a/pkgs/applications/misc/syncthingtray/default.nix +++ b/pkgs/applications/misc/syncthingtray/default.nix @@ -1,6 +1,7 @@ { mkDerivation , lib , fetchFromGitHub +, substituteAll , qtbase , qtwebengine , qtdeclarative @@ -31,6 +32,17 @@ mkDerivation rec { sha256 = "sha256-uhVRO9aiYJbUmwDp1+LIYF3wNBbVduVpTtVzaS0oUMU="; }; + patches = [ + # Fix Exec= path in runtime-generated + # ~/.config/autostart/syncthingtray.desktop file - this is required because + # we are wrapping the executable. We can't use `substituteAll` because we + # can't use `${placeholder "out"}` because that will produce the $out of + # the patch derivation itself, and not of syncthing's "out" placeholder. + # Hence we use a C definition with NIX_CFLAGS_COMPILE + ./use-nix-path-in-autostart.patch + ]; + NIX_CFLAGS_COMPILE = "-DEXEC_NIX_PATH=\"${placeholder "out"}/bin/syncthingtray\""; + buildInputs = [ qtbase cpp-utilities diff --git a/pkgs/applications/misc/syncthingtray/use-nix-path-in-autostart.patch b/pkgs/applications/misc/syncthingtray/use-nix-path-in-autostart.patch new file mode 100644 index 000000000000..a0907496ff9a --- /dev/null +++ b/pkgs/applications/misc/syncthingtray/use-nix-path-in-autostart.patch @@ -0,0 +1,13 @@ +diff --git i/widgets/settings/settingsdialog.cpp w/widgets/settings/settingsdialog.cpp +index 4deff1f..16845b5 100644 +--- i/widgets/settings/settingsdialog.cpp ++++ w/widgets/settings/settingsdialog.cpp +@@ -802,7 +802,7 @@ bool setAutostartEnabled(bool enabled) + desktopFile.write("[Desktop Entry]\n" + "Name=" APP_NAME "\n" + "Exec=\""); +- desktopFile.write(qEnvironmentVariable("APPIMAGE", QCoreApplication::applicationFilePath()).toUtf8().data()); ++ desktopFile.write(qEnvironmentVariable("APPIMAGE", EXEC_NIX_PATH).toUtf8().data()); + desktopFile.write("\" qt-widgets-gui --single-instance\nComment=" APP_DESCRIPTION "\n" + "Icon=" PROJECT_NAME "\n" + "Type=Application\n"