nixpkgs/pkgs/applications/misc/syncthingtray/default.nix
Silvan Mosberger 4f0dadbf38 treewide: format all inactive Nix files
After final improvements to the official formatter implementation,
this commit now performs the first treewide reformat of Nix files using it.
This is part of the implementation of RFC 166.

Only "inactive" files are reformatted, meaning only files that
aren't being touched by any PR with activity in the past 2 months.
This is to avoid conflicts for PRs that might soon be merged.
Later we can do a full treewide reformat to get the rest,
which should not cause as many conflicts.

A CI check has already been running for some time to ensure that new and
already-formatted files are formatted, so the files being reformatted here
should also stay formatted.

This commit was automatically created and can be verified using

    nix-build a08b3a4d19.tar.gz \
      --argstr baseRev b32a094368
    result/bin/apply-formatting $NIXPKGS_PATH
2024-12-10 20:26:33 +01:00

125 lines
3.8 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
qtbase,
qtsvg,
qtwayland,
qtwebengine,
qtdeclarative,
extra-cmake-modules,
cpp-utilities,
qtutilities,
qtforkawesome,
boost,
wrapQtAppsHook,
cmake,
kio,
plasma-framework,
qttools,
iconv,
cppunit,
syncthing,
xdg-utils,
webviewSupport ? true,
jsSupport ? true,
kioPluginSupport ? stdenv.hostPlatform.isLinux,
plasmoidSupport ? stdenv.hostPlatform.isLinux,
systemdSupport ? stdenv.hostPlatform.isLinux,
/*
It is possible to set via this option an absolute exec path that will be
written to the `~/.config/autostart/syncthingtray.desktop` file generated
during runtime. Alternatively, one can edit the desktop file themselves after
it is generated See:
https://github.com/NixOS/nixpkgs/issues/199596#issuecomment-1310136382
*/
autostartExecPath ? "syncthingtray",
versionCheckHook,
}:
stdenv.mkDerivation (finalAttrs: {
version = "1.6.3";
pname = "syncthingtray";
src = fetchFromGitHub {
owner = "Martchus";
repo = "syncthingtray";
rev = "v${finalAttrs.version}";
hash = "sha256-nWG9r0/qs9Jrj0Bo3RKtNSP1pnUd7CRiEkkRWf0UMNs=";
};
buildInputs =
[
qtbase
qtsvg
cpp-utilities
qtutilities
boost
qtforkawesome
]
++ lib.optionals stdenv.hostPlatform.isDarwin [ iconv ]
++ lib.optionals stdenv.hostPlatform.isLinux [ qtwayland ]
++ lib.optionals webviewSupport [ qtwebengine ]
++ lib.optionals jsSupport [ qtdeclarative ]
++ lib.optionals kioPluginSupport [ kio ]
++ lib.optionals plasmoidSupport [ plasma-framework ];
nativeBuildInputs = [
wrapQtAppsHook
cmake
qttools
# Although these are test dependencies, we add them anyway so that we test
# whether the test units compile. On Darwin we don't run the tests but we
# still build them.
cppunit
syncthing
] ++ lib.optionals plasmoidSupport [ extra-cmake-modules ];
# syncthing server seems to hang on darwin, causing tests to fail.
doCheck = !stdenv.hostPlatform.isDarwin;
preCheck = ''
export QT_QPA_PLATFORM=offscreen
export QT_PLUGIN_PATH="${lib.getBin qtbase}/${qtbase.qtPluginPrefix}"
'';
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
# put the app bundle into the proper place /Applications instead of /bin
mkdir -p $out/Applications
mv $out/bin/syncthingtray.app $out/Applications
# Make binary available in PATH like on other platforms
ln -s $out/Applications/syncthingtray.app/Contents/MacOS/syncthingtray $out/bin/syncthingtray
'';
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
cmakeFlags =
[
"-DQT_PACKAGE_PREFIX=Qt${lib.versions.major qtbase.version}"
"-DKF_PACKAGE_PREFIX=KF${lib.versions.major qtbase.version}"
"-DBUILD_TESTING=ON"
# See https://github.com/Martchus/syncthingtray/issues/208
"-DEXCLUDE_TESTS_FROM_ALL=OFF"
"-DAUTOSTART_EXEC_PATH=${autostartExecPath}"
# See https://github.com/Martchus/syncthingtray/issues/42
"-DQT_PLUGIN_DIR:STRING=${placeholder "out"}/${qtbase.qtPluginPrefix}"
"-DBUILD_SHARED_LIBS=ON"
]
++ lib.optionals (!plasmoidSupport) [ "-DNO_PLASMOID=ON" ]
++ lib.optionals (!kioPluginSupport) [ "-DNO_FILE_ITEM_ACTION_PLUGIN=ON" ]
++ lib.optionals systemdSupport [ "-DSYSTEMD_SUPPORT=ON" ]
++ lib.optionals (!webviewSupport) [ "-DWEBVIEW_PROVIDER:STRING=none" ];
qtWrapperArgs = [
"--prefix PATH : ${lib.makeBinPath [ xdg-utils ]}"
];
meta = with lib; {
homepage = "https://github.com/Martchus/syncthingtray";
description = "Tray application and Dolphin/Plasma integration for Syncthing";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ doronbehar ];
platforms = platforms.linux ++ platforms.darwin;
};
})