{ lib, mkYarnPackage, libsass, nodejs, python3, pkg-config, fetchFromGitHub , fetchYarnDeps, nixosTests, vips, nodePackages, lemmy-translations , lemmy-js-client }: let pkgConfig = { node-sass = { nativeBuildInputs = [ pkg-config ]; buildInputs = [ libsass python3 ]; postInstall = '' LIBSASS_EXT=auto yarn --offline run build rm build/config.gypi ''; }; sharp = { nativeBuildInputs = [ pkg-config nodePackages.semver ]; buildInputs = [ vips ]; postInstall = '' yarn --offline run install ''; }; }; name = "lemmy-ui"; version = "0.18.4"; src = ./.; in mkYarnPackage { inherit src pkgConfig name version; extraBuildInputs = [ libsass ]; packageJSON = ./package.json; offlineCache = fetchYarnDeps { yarnLock = src + "/yarn.lock"; sha256 = "sha256-EZSTYdUhb1+8GIx9UnOtImcg8ABA6RPqTrelZa3QD84="; }; yarnPreBuild = '' export npm_config_nodedir=${nodejs} ''; buildPhase = '' # Yarn writes cache directories etc to $HOME. export HOME=$PWD/yarn_home rm -rf node_modules/lemmy-js-client ln -sf ${lemmy-js-client}/libexec/lemmy-js-client/node_modules/lemmy-js-client node_modules/lemmy-js-client ln -sf $PWD/node_modules $PWD/deps/lemmy-ui/ echo 'export const VERSION = "${version}";' > $PWD/deps/lemmy-ui/src/shared/version.ts rm -rf deps/lemmy-ui/lemmy-translations ln -sf ${lemmy-translations} deps/lemmy-ui/lemmy-translations yarn --offline build:prod ''; preInstall = '' mkdir $out cp -R ./deps/lemmy-ui/dist $out cp -R ./node_modules $out ''; distPhase = "true"; passthru.updateScript = ./update.sh; passthru.tests.lemmy-ui = nixosTests.lemmy; meta = with lib; { description = "Building a federated alternative to reddit in rust"; homepage = "https://join-lemmy.org/"; license = licenses.agpl3Only; maintainers = with maintainers; [ happysalada billewanick ]; inherit (nodejs.meta) platforms; }; }