evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / es / espanso / package.nix
blob4e4e27f749fcf7726effb40f325f2420b1e0bdc6
1 { lib
2 , coreutils
3 , fetchFromGitHub
4 , rustPlatform
5 , pkg-config
6 , extra-cmake-modules
7 , dbus
8 , libX11
9 , libXi
10 , libXtst
11 , libnotify
12 , libxkbcommon
13 , openssl
14 , xclip
15 , xdotool
16 , setxkbmap
17 , wl-clipboard
18 , wxGTK32
19 , makeWrapper
20 , stdenv
21 , apple-sdk_11
22 , darwinMinVersionHook
23 , waylandSupport ? false
24 , x11Support ? stdenv.hostPlatform.isLinux
25 , testers
26 , espanso
28 # espanso does not support building with both X11 and Wayland support at the same time
29 assert stdenv.hostPlatform.isLinux -> x11Support != waylandSupport;
30 assert stdenv.hostPlatform.isDarwin -> !x11Support;
31 assert stdenv.hostPlatform.isDarwin -> !waylandSupport;
32 rustPlatform.buildRustPackage rec {
33   pname = "espanso";
34   version = "2.2-unstable-2024-05-14";
36   src = fetchFromGitHub {
37     owner = "espanso";
38     repo = "espanso";
39     rev = "8daadcc949c35a7b7aa20b7f544fdcff83e2c5f7";
40     hash = "sha256-4MArENBmX6tDVLZE1O8cuJe7A0R+sLZoxBkDvIwIVZ4=";
41   };
43   cargoLock = {
44     lockFile = ./Cargo.lock;
45     outputHashes = {
46       "yaml-rust-0.4.6" = "sha256-wXFy0/s4y6wB3UO19jsLwBdzMy7CGX4JoUt5V6cU7LU=";
47     };
48   };
50   nativeBuildInputs = [
51     extra-cmake-modules
52     pkg-config
53     makeWrapper
54     wxGTK32
55   ];
57   # Ref: https://github.com/espanso/espanso/blob/78df1b704fe2cc5ea26f88fdc443b6ae1df8a989/scripts/build_binary.rs#LL49C3-L62C4
58   buildNoDefaultFeatures = true;
59   buildFeatures = [
60     "modulo"
61   ] ++ lib.optionals waylandSupport [
62     "wayland"
63   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
64     "vendored-tls"
65   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
66     "native-tls"
67   ];
69   buildInputs = [
70     wxGTK32
71   ] ++ lib.optionals stdenv.hostPlatform.isLinux [
72     openssl
73     dbus
74     libnotify
75     libxkbcommon
76   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
77     apple-sdk_11
78     (darwinMinVersionHook "10.13")
79   ] ++ lib.optionals waylandSupport [
80     wl-clipboard
81   ] ++ lib.optionals x11Support [
82     libXi
83     libXtst
84     libX11
85     xclip
86     xdotool
87   ];
89   postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
90     substituteInPlace scripts/create_bundle.sh \
91       --replace-fail target/mac/ $out/Applications/ \
92       --replace-fail /bin/echo ${coreutils}/bin/echo
93     patchShebangs scripts/create_bundle.sh
94     substituteInPlace espanso/src/res/macos/Info.plist \
95       --replace-fail "<string>espanso</string>" "<string>${placeholder "out"}/Applications/Espanso.app/Contents/MacOS/espanso</string>"
96     substituteInPlace espanso/src/path/macos.rs  espanso/src/path/linux.rs \
97       --replace-fail '"/usr/local/bin/espanso"' '"${placeholder "out"}/bin/espanso"'
98   '';
100   # Some tests require networking
101   doCheck = false;
103   postInstall =
104     if stdenv.hostPlatform.isDarwin then ''
105       EXEC_PATH=$out/bin/espanso BUILD_ARCH=current ${stdenv.shell} ./scripts/create_bundle.sh
106     '' else ''
107       wrapProgram $out/bin/espanso \
108         --prefix PATH : ${lib.makeBinPath (
109           lib.optionals stdenv.hostPlatform.isLinux [
110             libnotify
111             setxkbmap
112           ] ++ lib.optionals waylandSupport [
113             wl-clipboard
114           ] ++ lib.optionals x11Support [
115             xclip
116           ]
117         )}
118     '';
120   passthru.tests.version = testers.testVersion {
121     package = espanso;
122     # remove when updating to a release version
123     version = "2.2.1";
124   };
126   meta = with lib; {
127     description = "Cross-platform Text Expander written in Rust";
128     mainProgram = "espanso";
129     homepage = "https://espanso.org";
130     license = licenses.gpl3Plus;
131     maintainers = with maintainers; [ kimat pyrox0 n8henrie ];
132     platforms = platforms.unix;
134     longDescription = ''
135       Espanso detects when you type a keyword and replaces it while you're typing.
136     '';
137   };