biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / servers / matrix-appservice-discord / default.nix
blob605df82b5771d995ded590e8f332f5a1ffa80bd1
1 { lib
2 , mkYarnPackage
3 , fetchYarnDeps
4 , fetchFromGitHub
5 , srcOnly
6 , makeWrapper
7 , removeReferencesTo
8 , python3
9 , nodejs
10 , matrix-sdk-crypto-nodejs
13 let
14   pin = lib.importJSON ./pin.json;
15   nodeSources = srcOnly nodejs;
17 in mkYarnPackage rec {
18   pname = "matrix-appservice-discord";
19   inherit (pin) version;
21   src = fetchFromGitHub {
22     owner = "matrix-org";
23     repo = "matrix-appservice-discord";
24     rev = "v${version}";
25     hash = pin.srcHash;
26   };
28   packageJSON = ./package.json;
29   offlineCache = fetchYarnDeps {
30     yarnLock = "${src}/yarn.lock";
31     sha256 = pin.yarnSha256;
32   };
34   pkgConfig = {
35     "@matrix-org/matrix-sdk-crypto-nodejs" = {
36       postInstall = ''
37         # replace with the built package
38         cd ..
39         rm -r matrix-sdk-crypto-nodejs
40         ln -s ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/* ./
41       '';
42     };
44     better-sqlite3 = {
45       nativeBuildInputs = [ python3 ];
46       postInstall = ''
47         # build native sqlite bindings
48         npm run build-release --offline --nodedir="${nodeSources}"
49         find build -type f -exec \
50           ${removeReferencesTo}/bin/remove-references-to \
51           -t "${nodeSources}" {} \;
52      '';
53     };
54   };
56   nativeBuildInputs = [ makeWrapper ];
58   buildPhase = ''
59     runHook preBuild
61     # compile TypeScript sources
62     yarn --offline build
64     runHook postBuild
65   '';
67   doCheck = true;
68   checkPhase = ''
69     runHook preCheck
71     # the default 2000ms timeout is sometimes too short on our busy builders
72     yarn --offline test --timeout 10000
74     runHook postCheck
75   '';
77   postInstall = ''
78     OUT_JS_DIR="$out/${passthru.nodeAppDir}/build"
80     # server wrapper
81     makeWrapper '${nodejs}/bin/node' "$out/bin/${pname}" \
82       --add-flags "$OUT_JS_DIR/src/discordas.js"
84     # admin tools wrappers
85     for toolPath in $OUT_JS_DIR/tools/*; do
86       makeWrapper '${nodejs}/bin/node' \
87         "$out/bin/${pname}-$(basename $toolPath .js)" \
88         --add-flags "$toolPath"
89     done
90   '';
92   # don't generate the dist tarball
93   doDist = false;
95   passthru = {
96     nodeAppDir = "libexec/${pname}/deps/${pname}";
97     updateScript = ./update.sh;
98   };
100   meta = {
101     description = "A bridge between Matrix and Discord";
102     homepage = "https://github.com/Half-Shot/matrix-appservice-discord";
103     license = lib.licenses.asl20;
104     maintainers = with lib.maintainers; [ pacien ];
105     platforms = lib.platforms.linux;
106     mainProgram = "matrix-appservice-discord";
107   };