1{ buildNpmPackage
2, fetchFromGitHub
3, lib
4, substituteAll
5, esbuild
6, buildGoModule
7, buildWebExtension ? false
8}:
9buildNpmPackage rec {
10 pname = "vencord";
11 version = "1.2.5";
12
13 src = fetchFromGitHub {
14 owner = "Vendicated";
15 repo = "Vencord";
16 rev = "v${version}";
17 sha256 = "sha256-AqzhTzfqbYotQxLrkhkjvSPB4irL/q2fxXusWgCibpI=";
18 };
19
20 ESBUILD_BINARY_PATH = lib.getExe (esbuild.override {
21 buildGoModule = args: buildGoModule (args // rec {
22 version = "0.15.18";
23 src = fetchFromGitHub {
24 owner = "evanw";
25 repo = "esbuild";
26 rev = "v${version}";
27 hash = "sha256-b9R1ML+pgRg9j2yrkQmBulPuLHYLUQvW+WTyR/Cq6zE=";
28 };
29 vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
30 });
31 });
32
33 # Supresses an error about esbuild's version.
34 npmRebuildFlags = [ "|| true" ];
35
36 npmDepsHash = "sha256-Sj74qx9Tdz1EsoOVqk4ZdXTXxB4ShrFl3VRCWJ6/KcQ=";
37 npmFlags = [ "--legacy-peer-deps" ];
38 npmBuildScript = if buildWebExtension then "buildWeb" else "build";
39
40 prePatch = ''
41 cp ${./package-lock.json} ./package-lock.json
42 '';
43
44 patches = [
45 (substituteAll {
46 src = ./replace-git.patch;
47 inherit version;
48 })
49 ];
50
51 installPhase = if buildWebExtension then ''
52 cp -r dist/chromium-unpacked/ $out
53 '' else ''
54 cp -r dist/ $out
55 '';
56
57 meta = with lib; {
58 description = "Vencord web extension";
59 homepage = "https://github.com/Vendicated/Vencord";
60 license = licenses.gpl3Only;
61 maintainers = with maintainers; [ FlafyDev NotAShelf Scrumplex ];
62 };
63}