# SPDX-FileCopyrightText: 2022 Gregor Kleen # # SPDX-License-Identifier: AGPL-3.0-or-later { frontendSource, ... }: final: prev: let setupNodeDeps = '' ln -s ${final.uniworxNodeDependencies}/lib/node_modules ./node_modules export PATH="${final.uniworxNodeDependencies}/bin:$PATH" ''; in { uniworxFrontend = prev.stdenv.mkDerivation { name = "uniworx-frontend"; srcs = [frontendSource prev.uniworxWellKnown]; sourceRoot = "source"; phases = ["unpackPhase" "checkPhase" "buildPhase" "installPhase"]; postUnpack = '' ${final.xorg.lndir}/bin/lndir -silent ../uniworx-well-known $sourceRoot ''; preBuild = setupNodeDeps; buildPhase = '' runHook preBuild webpack --progress runHook postBuild ''; preCheck = '' ${setupNodeDeps} export FONTCONFIG_FILE="${final.fontconfig.out}/etc/fonts/fonts.conf" export FONTCONFIG_PATH="${final.fontconfig.out}/etc/fonts/" export CHROME_BIN="${final.chromium}/bin/chromium-browser" ''; checkPhase = '' runHook preCheck eslint frontend/src karma start --conf karma.conf.js runHook postCheck ''; installPhase = '' mkdir -p $out $out/config cp -r --reflink=auto well-known static $out cp -r --reflink=auto config/webpack.yml $out/config ''; passthru.check = final.uniworxFrontend.overrideAttrs (oldAttrs: { name = "${oldAttrs.name}-check"; phases = ["unpackPhase" "buildPhase"]; buildPhase = '' mkdir $out ( ${oldAttrs.checkPhase} ) | tee $out/test-stdout ''; }); }; }