76 lines
2.5 KiB
Nix
76 lines
2.5 KiB
Nix
|
{ pkgs, commonFn, langFn }:
|
||
|
|
||
|
rec {
|
||
|
common = commonFn pkgs;
|
||
|
lang = langFn pkgs;
|
||
|
componentsPackageJson = let
|
||
|
raw = pkgs.lib.importJSON ../packages/components/package.json;
|
||
|
modified =
|
||
|
pkgs.lib.recursiveUpdate raw { dependencies.react-dom = "^18.2.0"; };
|
||
|
packageJsonString = builtins.toJSON modified;
|
||
|
in pkgs.writeText "packages/components/patched-package.json"
|
||
|
packageJsonString;
|
||
|
yarn-source = pkgs.mkYarnPackage {
|
||
|
name = "squiggle-components_yarnsource";
|
||
|
buildInputs = common.buildInputs;
|
||
|
src = ../packages/components;
|
||
|
packageJSON = componentsPackageJson;
|
||
|
yarnLock = ../yarn.lock;
|
||
|
packageResolutions."@quri/squiggle-lang" = lang.build;
|
||
|
};
|
||
|
lint = pkgs.stdenv.mkDerivation {
|
||
|
name = "squiggle-components-lint";
|
||
|
src = ../packages/components;
|
||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||
|
buildPhase = "yarn lint";
|
||
|
installPhase = "mkdir -p $out";
|
||
|
};
|
||
|
build = pkgs.stdenv.mkDerivation {
|
||
|
name = "squiggle-components-build";
|
||
|
src = yarn-source + "/libexec/@quri/squiggle-components";
|
||
|
buildInputs = common.buildInputs;
|
||
|
buildPhase = ''
|
||
|
cp -r node_modules/@quri/squiggle-lang deps/@quri
|
||
|
pushd deps/@quri/squiggle-components
|
||
|
|
||
|
yarn --offline build:cjs
|
||
|
yarn --offline build:css
|
||
|
popd
|
||
|
'';
|
||
|
installPhase = ''
|
||
|
mkdir -p $out
|
||
|
|
||
|
# annoying hack because permissions on transitive dependencies later on
|
||
|
mv deps/@quri/squiggle-components/node_modules deps/@quri/squiggle-components/NODE_MODULES
|
||
|
mv node_modules deps/@quri/squiggle-components
|
||
|
|
||
|
# patching .gitignore so flake keeps build artefacts
|
||
|
sed -i /dist/d deps/@quri/squiggle-components/.gitignore
|
||
|
cp -r deps/@quri/squiggle-components/. $out
|
||
|
'';
|
||
|
};
|
||
|
bundle = pkgs.stdenv.mkDerivation {
|
||
|
name = "squiggle-components-bundle";
|
||
|
src = yarn-source + "/libexec/@quri/squiggle-components";
|
||
|
buildInputs = common.buildInputs;
|
||
|
buildPhase = ''
|
||
|
cp -r node_modules/@quri/squiggle-lang deps/@quri
|
||
|
pushd deps/@quri/squiggle-components
|
||
|
|
||
|
yarn --offline bundle
|
||
|
popd
|
||
|
'';
|
||
|
installPhase = ''
|
||
|
mkdir -p $out
|
||
|
|
||
|
# annoying hack because permissions on transitive dependencies later on
|
||
|
mv deps/@quri/squiggle-components/node_modules deps/@quri/squiggle-components/NODE_MODULES
|
||
|
mv node_modules deps/@quri/squiggle-components
|
||
|
|
||
|
# patching .gitignore so flake keeps build artefacts
|
||
|
sed -i /dist/d deps/@quri/squiggle-components/.gitignore
|
||
|
cp -r deps/@quri/squiggle-components/. $out
|
||
|
'';
|
||
|
};
|
||
|
}
|