63 lines
1.6 KiB
Nix
63 lines
1.6 KiB
Nix
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
|
|
#
|
|
# 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
|
|
'';
|
|
});
|
|
};
|
|
}
|