dput-ng: fix eval (#364540)
[NixPkgs.git] / pkgs / by-name / po / pot / package.nix
blob4285db9048c23d3aeb9ae10f7b2219ae37c69362
2   lib,
3   stdenv,
4   rustPlatform,
5   fetchFromGitHub,
6   nodejs,
7   pnpm_9,
8   wrapGAppsHook3,
9   cargo,
10   rustc,
11   cargo-tauri_1,
12   pkg-config,
13   esbuild,
14   buildGoModule,
15   libayatana-appindicator,
16   gtk3,
17   webkitgtk_4_0,
18   libsoup_2_4,
19   openssl,
20   xdotool,
23 let
24   pnpm = pnpm_9;
26 stdenv.mkDerivation (finalAttrs: {
27   pname = "pot";
28   version = "3.0.6";
30   src = fetchFromGitHub {
31     owner = "pot-app";
32     repo = "pot-desktop";
33     rev = finalAttrs.version;
34     hash = "sha256-PUXZT1kiInM/CXUoRko/5qlrRurGpQ4ym5YMTgFwuxE=";
35   };
37   sourceRoot = "${finalAttrs.src.name}/src-tauri";
39   postPatch = ''
40     substituteInPlace $cargoDepsCopy/libappindicator-sys-*/src/lib.rs \
41       --replace "libayatana-appindicator3.so.1" "${libayatana-appindicator}/lib/libayatana-appindicator3.so.1"
42   '';
44   pnpmDeps = pnpm.fetchDeps {
45     inherit (finalAttrs) pname version src;
46     hash = "sha256-iYQNGRWqXYBU+WIH/Xm8qndgOQ6RKYCtAyi93kb7xrQ=";
47   };
49   pnpmRoot = "..";
51   cargoDeps = rustPlatform.importCargoLock {
52     lockFile = ./Cargo.lock;
53     outputHashes = {
54       # All other crates in the same workspace reuse this hash.
55       "tauri-plugin-autostart-0.0.0" = "sha256-rWk9Qz1XmByqPRIgR+f12743uYvnEGTHno9RrxmT8JE=";
56     };
57   };
59   nativeBuildInputs = [
60     rustPlatform.cargoSetupHook
61     cargo
62     rustc
63     cargo-tauri_1.hook
64     nodejs
65     pnpm.configHook
66     wrapGAppsHook3
67     pkg-config
68   ];
70   buildInputs = [
71     gtk3
72     libsoup_2_4
73     libayatana-appindicator
74     openssl
75     webkitgtk_4_0
76     xdotool
77   ];
79   env.ESBUILD_BINARY_PATH = "${lib.getExe (
80     esbuild.override {
81       buildGoModule =
82         args:
83         buildGoModule (
84           args
85           // rec {
86             version = "0.21.5";
87             src = fetchFromGitHub {
88               owner = "evanw";
89               repo = "esbuild";
90               rev = "v${version}";
91               hash = "sha256-FpvXWIlt67G8w3pBKZo/mcp57LunxDmRUaCU/Ne89B8=";
92             };
93           }
94         );
95     }
96   )}";
98   preConfigure = ''
99     # pnpm.configHook has to write to .., as our sourceRoot is set to src-tauri
100     # TODO: move frontend into its own drv
101     chmod +w ..
102   '';
104   meta = {
105     description = "Cross-platform translation software";
106     mainProgram = "pot";
107     homepage = "https://pot-app.com";
108     platforms = lib.platforms.linux;
109     license = lib.licenses.gpl3Only;
110     maintainers = with lib.maintainers; [ linsui ];
111   };