squiggle/nix/squiggle-website.nix
2022-08-15 22:45:03 -07:00

49 lines
1.6 KiB
Nix

{ pkgs, commonFn, langFn, componentsFn }:
rec {
common = commonFn pkgs;
lang = langFn pkgs;
components = componentsFn pkgs;
websitePackageJson = let
raw = pkgs.lib.importJSON ../packages/website/package.json;
modified = pkgs.lib.recursiveUpdate raw {
dependencies.postcss-import = "^14.1.0";
dependencies.tailwindcss = "^3.1.8";
};
packageJsonString = builtins.toJSON modified;
in pkgs.writeText "packages/website/patched-package.json" packageJsonString;
website-yarnPackage = pkgs.mkYarnPackage {
name = "squiggle-website_source";
src = ../packages/website;
packageJSON = websitePackageJson;
yarnLock = ../yarn.lock;
packageResolutions."@quri/squiggle-lang" = lang.lang-build;
packageResolutions."@quri/squiggle-components" =
components.components-package-build;
workspaceDependencies =
[ lang.lang-yarnPackage components.components-yarnPackage ];
};
website-lint = pkgs.stdenv.mkDerivation {
name = "squiggle-website-lint";
buildInputs = common.buildInputs ++ common.prettier;
src = website-yarnPackage
+ "/libexec/squiggle-website/deps/squiggle-website";
buildPhase = "yarn --offline lint";
installPhase = "mkdir -p $out";
};
website = pkgs.stdenv.mkDerivation {
name = "squiggle-website";
buildInputs = common.buildInputs;
src = website-yarnPackage + "/libexec/squiggle-website";
buildPhase = ''
pushd deps/squiggle-website
yarn --offline build
popd
'';
installPhase = ''
mkdir -p $out
cp -r $src/build $out
'';
};
}