Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / web-apps / outline / default.nix
blobfa66487758f88c4c27cdd2b3589aa3cf43236b5c
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , fetchYarnDeps
5 , makeWrapper
6 , nix-update-script
7 , prefetch-yarn-deps
8 , fixup-yarn-lock
9 , nodejs
10 , yarn
11 , nixosTests
14 stdenv.mkDerivation rec {
15   pname = "outline";
16   version = "0.78.0";
18   src = fetchFromGitHub {
19     owner = "outline";
20     repo = "outline";
21     rev = "v${version}";
22     hash = "sha256-I0ngEJfHWywJSYOloJbtuKzu95yJibo7hLFgkyT2Wz8=";
23   };
25   nativeBuildInputs = [ makeWrapper prefetch-yarn-deps fixup-yarn-lock ];
26   buildInputs = [ yarn nodejs ];
28   yarnOfflineCache = fetchYarnDeps {
29     yarnLock = "${src}/yarn.lock";
30     hash = "sha256-TKAV49VJmR/SWTd2T2vHMnYq2j9fwimzYq1CCfRXk0Q=";
31   };
33   configurePhase = ''
34     export HOME=$(mktemp -d)/yarn_home
35   '';
37   buildPhase = ''
38     runHook preBuild
39     export NODE_OPTIONS=--openssl-legacy-provider
41     yarn config --offline set yarn-offline-mirror $yarnOfflineCache
42     fixup-yarn-lock yarn.lock
44     yarn install --offline \
45       --frozen-lockfile \
46       --ignore-engines --ignore-scripts
47     patchShebangs node_modules/
48     # apply upstream patches with `patch-package`
49     yarn run postinstall
50     yarn build
52     runHook postBuild
53   '';
55   installPhase = ''
56     runHook preInstall
58     mkdir -p $out/bin $out/share/outline
59     mv build server public node_modules $out/share/outline/
61     node_modules=$out/share/outline/node_modules
62     build=$out/share/outline/build
63     server=$out/share/outline/server
65     makeWrapper ${nodejs}/bin/node $out/bin/outline-server \
66       --add-flags $build/server/index.js \
67       --set NODE_ENV production \
68       --set NODE_PATH $node_modules \
69       --prefix PATH : ${lib.makeBinPath [ nodejs ]} # required to run migrations
71     runHook postInstall
72   '';
74   passthru = {
75     tests = {
76       basic-functionality = nixosTests.outline;
77     };
78     updateScript = nix-update-script { };
79     # alias for nix-update to be able to find and update this attribute
80     offlineCache = yarnOfflineCache;
81   };
83   meta = with lib; {
84     description = "Fastest wiki and knowledge base for growing teams. Beautiful, feature rich, and markdown compatible";
85     homepage = "https://www.getoutline.com/";
86     changelog = "https://github.com/outline/outline/releases";
87     license = licenses.bsl11;
88     maintainers = with maintainers; [ cab404 yrd xanderio ];
89     platforms = platforms.linux;
90   };