biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / misc / synergy / default.nix
blob7db338b16897f24db5849efef447f24d5c60810c
1 { withGUI ? true
2 , stdenv
3 , lib
4 , fetchFromGitHub
5 , wrapQtAppsHook
7 , cmake
8 , openssl
9 , pcre
10 , util-linux
11 , libselinux
12 , libsepol
13 , pkg-config
14 , gdk-pixbuf
15 , libnotify
16 , qttools
17 , libICE
18 , libSM
19 , libX11
20 , libxkbfile
21 , libXi
22 , libXtst
23 , libXrandr
24 , libXinerama
25 , xkeyboardconfig
26 , xinput
27 , avahi-compat
29   # MacOS / darwin
30 , ApplicationServices
31 , Carbon
32 , Cocoa
33 , CoreServices
34 , ScreenSaver
35 , UserNotifications
38 stdenv.mkDerivation rec {
39   pname = "synergy";
40   version = "1.14.6.19-stable";
42   src = fetchFromGitHub {
43     owner = "symless";
44     repo = "synergy-core";
45     rev = version;
46     hash = "sha256-0QqklfSsvcXh7I2jaHk82k0nY8gQOj9haA4WOjGqBqY=";
47     fetchSubmodules = true;
48   };
50   patches = [
51     # Without this OpenSSL from nixpkgs is not detected
52     ./darwin-non-static-openssl.patch
53   ];
55   postPatch = ''
56     substituteInPlace src/gui/src/SslCertificate.cpp \
57       --replace 'kUnixOpenSslCommand[] = "openssl";' 'kUnixOpenSslCommand[] = "${openssl}/bin/openssl";'
58   '' + lib.optionalString stdenv.hostPlatform.isLinux ''
59     substituteInPlace src/lib/synergy/unix/AppUtilUnix.cpp \
60       --replace "/usr/share/X11/xkb/rules/evdev.xml" "${xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"
61   '';
63   nativeBuildInputs = [
64     cmake
65     pkg-config
66   ] ++ lib.optional withGUI wrapQtAppsHook;
68   buildInputs = [
69     qttools # Used for translations even when not building the GUI
70     openssl
71     pcre
72   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
73     ApplicationServices
74     Carbon
75     Cocoa
76     CoreServices
77     ScreenSaver
78     UserNotifications
79   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
80     util-linux
81     libselinux
82     libsepol
83     libICE
84     libSM
85     libX11
86     libXi
87     libXtst
88     libXrandr
89     libXinerama
90     libxkbfile
91     xinput
92     avahi-compat
93     gdk-pixbuf
94     libnotify
95   ];
97   # Silences many warnings
98   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin "-Wno-inconsistent-missing-override";
100   cmakeFlags = lib.optional (!withGUI) "-DSYNERGY_BUILD_LEGACY_GUI=OFF"
101     # NSFilenamesPboardType is deprecated in 10.14+
102     ++ lib.optional stdenv.hostPlatform.isDarwin "-DCMAKE_OSX_DEPLOYMENT_TARGET=${if stdenv.hostPlatform.isAarch64 then "10.13" else stdenv.hostPlatform.darwinSdkVersion}";
104   doCheck = true;
106   checkPhase = ''
107     runHook preCheck
108   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
109     # filter out tests failing with sandboxing on darwin
110     export GTEST_FILTER=-ServerConfigTests.serverconfig_will_deem_equal_configs_with_same_cell_names:NetworkAddress.hostname_valid_parsing
111   '' + ''
112     bin/unittests
113     runHook postCheck
114   '';
116   installPhase = ''
117     runHook preInstall
119     mkdir -p $out/bin
120     cp bin/{synergyc,synergys,synergyd,syntool} $out/bin/
121   '' + lib.optionalString withGUI ''
122     cp bin/synergy $out/bin/
123   '' + lib.optionalString stdenv.hostPlatform.isLinux ''
124     mkdir -p $out/share/{applications,icons/hicolor/scalable/apps}
125     cp ../res/synergy.svg $out/share/icons/hicolor/scalable/apps/
126     substitute ../res/synergy.desktop $out/share/applications/synergy.desktop \
127       --replace "/usr/bin" "$out/bin"
128   '' + lib.optionalString (stdenv.hostPlatform.isDarwin && withGUI) ''
129     mkdir -p $out/Applications
130     cp -r bundle/Synergy.app $out/Applications
131     ln -s $out/bin $out/Applications/Synergy.app/Contents/MacOS
132   '' + ''
133     runHook postInstall
134   '';
136   dontWrapQtApps = lib.optional (!withGUI) true;
138   meta = with lib; {
139     description = "Share one mouse and keyboard between multiple computers";
140     homepage = "https://symless.com/synergy";
141     changelog = "https://github.com/symless/synergy-core/blob/${version}/ChangeLog";
142     mainProgram = lib.optionalString (!withGUI) "synergyc";
143     license = licenses.gpl2Only;
144     maintainers = with maintainers; [ talyz ];
145     platforms = platforms.unix;
146   };