nixpkgs/pkgs/servers/web-apps/wiki-js/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

36 lines
772 B
Nix
Raw Normal View History

wiki-js: use nodejs18 Part of #229910. Unfortunately this is a little hacky because upstream doesn't intend to support it for 2.5, but only for 3.0 which isn't out yet, however nodejs-16 will get out of maintenance during the support-span of NixOS 23.05[1]. The only breaking change is that `extract-files` uses a deprecated way of exposing modules, I went through the list of other breaking changes in v17 and v18[2][3] and couldn't spot any usage of removed features, also local testing didn't reveal further issues. Unfortunately fixing that breakage turned out to be non-trivial. Currently, `extract-files@9.0.0` is used with the problematic portions in its `package.json`, however it's only a transitive dependency of `@graphql-tools/url-loader` & `apollo-upload-client`. Unfortunately, the versions of that in use require v9 and don't work with a newer version of `extract-files` with the problem fixed[4]. Also, upgrading the dependencies in question is not a feasible option because `graphql-tools` was split up into multiple smaller packages in v8 and also some of the APIs in use in `wiki.js` were dropped there[5], so this would also be very time-consuming and non-trivial to fix. Since this was the only issue, I decided to go down the hacky route and patch the problem in `package.json` of `extract-files` manually during our `patchPhase`. [1] https://github.com/requarks/wiki/discussions/6388 [2] https://nodejs.org/en/blog/release/v17.0.0 [3] https://nodejs.org/en/blog/release/v18.0.0 [4] Upon local testing, this broke with the following error: Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './public/extractFiles' is not defined by "exports" in /wiki/node_modules/extract-files/package.json [5] For instance `SchemaDirectiveVisitor` in `server/graph/directives/auth`.
2023-05-14 12:36:45 +01:00
{ stdenv, fetchurl, lib, nixosTests, jq, moreutils }:
2021-03-18 11:33:40 +00:00
stdenv.mkDerivation rec {
pname = "wiki-js";
version = "2.5.300";
2021-03-18 11:33:40 +00:00
src = fetchurl {
url = "https://github.com/Requarks/wiki/releases/download/v${version}/${pname}.tar.gz";
sha256 = "sha256-Cycq2oeB8v02VtE5KPs09+uzZqvGbJRH+J4YPDYo+yY=";
2021-03-18 11:33:40 +00:00
};
sourceRoot = ".";
dontBuild = true;
installPhase = ''
runHook preInstall
2021-03-18 11:33:40 +00:00
mkdir $out
cp -r . $out
runHook postInstall
2021-03-18 11:33:40 +00:00
'';
2022-04-08 17:44:02 +01:00
passthru = {
tests = { inherit (nixosTests) wiki-js; };
updateScript = ./update.sh;
};
2021-03-18 11:33:40 +00:00
meta = with lib; {
homepage = "https://js.wiki/";
description = "A modern and powerful wiki app built on Node.js";
license = licenses.agpl3Only;
maintainers = with maintainers; [ ma27 ];
};
}