ripasso-cursive: cosmetic changes (#361736)
[NixPkgs.git] / pkgs / by-name / ma / matrix-appservice-irc / package.nix
blob75ef8d6e69d23a915adaa60ef014a1046611bbbb
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , fetchYarnDeps
5 , fixup-yarn-lock
6 , nodejs
7 , nodejs-slim
8 , matrix-sdk-crypto-nodejs
9 , nixosTests
10 , nix-update-script
11 , yarn
14 let
15   pname = "matrix-appservice-irc";
16   version = "3.0.3";
18   src = fetchFromGitHub {
19     owner = "matrix-org";
20     repo = pname;
21     rev = "refs/tags/${version}";
22     hash = "sha256-Uq1sd1ZXv1JGjvCXHxBsNKvmdjMf4y4MVlOnCas4u/w=";
23   };
25   yarnOfflineCache = fetchYarnDeps {
26     name = "${pname}-${version}-offline-cache";
27     yarnLock = "${src}/yarn.lock";
28     hash = "sha256-PObpXC8VIdsqhOZLLeHdS9mvXnjNQOrs2vlTeK5keRw=";
29   };
32 stdenv.mkDerivation {
33   inherit pname version src yarnOfflineCache;
35   strictDeps = true;
37   nativeBuildInputs = [
38     fixup-yarn-lock
39     nodejs-slim
40     yarn
41     nodejs.pkgs.node-gyp-build
42   ];
44   configurePhase = ''
45     runHook preConfigure
47     export HOME=$(mktemp -d)
48     yarn config --offline set yarn-offline-mirror "$yarnOfflineCache"
49     fixup-yarn-lock yarn.lock
50     yarn install --frozen-lockfile --offline --no-progress --non-interactive --ignore-scripts
51     patchShebangs node_modules/ bin/
53     runHook postConfigure
54   '';
56   buildPhase = ''
57     runHook preBuild
59     yarn --offline build
61     runHook postBuild
62   '';
64   installPhase = ''
65     runHook preInstall
67     mkdir $out
68     cp package.json $out
69     cp app.js config.schema.yml $out
70     cp -r bin lib public $out
72     # prune dependencies to production only
73     yarn install --frozen-lockfile --offline --no-progress --non-interactive --ignore-scripts --production
74     cp -r node_modules $out
76     # replace matrix-sdk-crypto-nodejs with nixos package
77     rm -rv $out/node_modules/@matrix-org/matrix-sdk-crypto-nodejs
78     ln -sv ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs $out/node_modules/@matrix-org/
80     runHook postInstall
81   '';
83   passthru.tests.matrix-appservice-irc = nixosTests.matrix-appservice-irc;
84   passthru.updateScript = nix-update-script { };
86   meta = with lib; {
87     changelog = "https://github.com/matrix-org/matrix-appservice-irc/releases/tag/${version}";
88     description = "Node.js IRC bridge for Matrix";
89     mainProgram = "matrix-appservice-irc";
90     maintainers = with maintainers; [ rhysmdnz ];
91     homepage = "https://github.com/matrix-org/matrix-appservice-irc";
92     license = licenses.asl20;
93     platforms = platforms.linux;
94   };