refactored to use imports so that flake.nix
is under 100 lines
This commit is contained in:
parent
e411e70db9
commit
909ebbec94
280
flake.nix
280
flake.nix
|
@ -35,249 +35,39 @@
|
||||||
hciPkgs = import nixpkgs { system = hciSystem; };
|
hciPkgs = import nixpkgs { system = hciSystem; };
|
||||||
effects = hercules-ci-effects.lib.withPkgs hciPkgs;
|
effects = hercules-ci-effects.lib.withPkgs hciPkgs;
|
||||||
|
|
||||||
buildInputsCommon = with pkgs; [ nodejs yarn ];
|
common = {
|
||||||
prettierCommon = with pkgs.nodePackages; [ prettier ];
|
buildInputs = with pkgs; [ nodejs yarn ];
|
||||||
pkgWhich = [ pkgs.which ];
|
prettier = with pkgs.nodePackages; [ prettier ];
|
||||||
|
which = [ pkgs.which ];
|
||||||
# To get prettier into later source trees
|
};
|
||||||
monorepo-yarnPackage = pkgs.mkYarnPackage {
|
lang = import ./nix/squiggle-lang.nix {
|
||||||
name = "squiggle-monorepo_source";
|
inherit system pkgs common gentype;
|
||||||
src = ./.;
|
};
|
||||||
packageJSON = ./package.json;
|
components =
|
||||||
yarnLock = ./yarn.lock;
|
import ./nix/squiggle-components.nix { inherit pkgs common lang; };
|
||||||
|
website = import ./nix/squiggle-website.nix {
|
||||||
|
inherit pkgs common lang components;
|
||||||
};
|
};
|
||||||
|
|
||||||
# packages in subrepos
|
|
||||||
lang-yarnPackage = pkgs.mkYarnPackage {
|
|
||||||
name = "squiggle-lang_source";
|
|
||||||
src = ./packages/squiggle-lang;
|
|
||||||
packageJSON = ./packages/squiggle-lang/package.json;
|
|
||||||
yarnLock = ./yarn.lock;
|
|
||||||
# extraBuildInputs = prettierCommon;
|
|
||||||
pkgConfig = {
|
|
||||||
rescript = {
|
|
||||||
buildInputs = pkgWhich ++ [ pkgs.gcc_multi ];
|
|
||||||
postInstall = ''
|
|
||||||
echo "PATCHELF'ING RESCRIPT EXECUTABLES (INCL NINJA)"
|
|
||||||
# Patching interpreter for linux/*.exe's
|
|
||||||
THE_LD=$(patchelf --print-interpreter $(which mkdir))
|
|
||||||
patchelf --set-interpreter $THE_LD linux/*.exe && echo "- patched interpreter for linux/*.exe's"
|
|
||||||
|
|
||||||
# Replacing needed shared library for linux/ninja.exe
|
|
||||||
THE_SO=$(find /nix/store/*/lib64 -name libstdc++.so.6 | head -n 1)
|
|
||||||
patchelf --replace-needed libstdc++.so.6 $THE_SO linux/ninja.exe && echo "- replaced needed for linux/ninja.exe"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
bisect_ppx = {
|
|
||||||
buildInputs =
|
|
||||||
pkgWhich; # ++ (with pkgs; [ ocaml nodePackages.esy ocamlPackages.bisect_ppx ]);
|
|
||||||
postInstall = ''
|
|
||||||
echo "PATCHELF'ING BISECT_PPX EXECUTABLE"
|
|
||||||
THE_LD=$(patchelf --print-interpreter $(which mkdir))
|
|
||||||
patchelf --set-interpreter $THE_LD bin/linux/ppx
|
|
||||||
patchelf --set-interpreter $THE_LD bin/linux/bisect-ppx-report
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
gentype = {
|
|
||||||
postInstall = ''
|
|
||||||
mv gentype.exe ELFLESS-gentype.exe
|
|
||||||
cp ${
|
|
||||||
gentype.outputs.defaultPackage."${system}"
|
|
||||||
}/GenType.exe gentype.exe
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
lang-lint = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-lang-lint";
|
|
||||||
src = lang-yarnPackage
|
|
||||||
+ "/libexec/@quri/squiggle-lang/deps/@quri/squiggle-lang";
|
|
||||||
buildInputs = buildInputsCommon ++ prettierCommon;
|
|
||||||
buildPhase = ''
|
|
||||||
yarn lint:prettier
|
|
||||||
yarn lint:rescript
|
|
||||||
'';
|
|
||||||
installPhase = "mkdir -p $out";
|
|
||||||
};
|
|
||||||
lang-build = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-lang-build";
|
|
||||||
# `peggy` is in the `node_modules` that's adjacent to `deps`.
|
|
||||||
src = lang-yarnPackage + "/libexec/@quri/squiggle-lang";
|
|
||||||
buildInputs = buildInputsCommon;
|
|
||||||
buildPhase = ''
|
|
||||||
mv node_modules deps
|
|
||||||
pushd deps/@quri/squiggle-lang
|
|
||||||
yarn --offline build:peggy
|
|
||||||
yarn --offline build:rescript
|
|
||||||
yarn --offline build:typescript
|
|
||||||
|
|
||||||
# custom gitignore so that the flake keeps build artefacts
|
|
||||||
mv .gitignore GITIGNORE
|
|
||||||
sed -i /Reducer_Peggy_GeneratedParser.js/d GITIGNORE
|
|
||||||
sed -i /\*.bs.js/d GITIGNORE
|
|
||||||
sed -i /\*.gen.ts/d GITIGNORE
|
|
||||||
sed -i /\*.gen.tsx/d GITIGNORE
|
|
||||||
sed -i /\*.gen.js/d GITIGNORE
|
|
||||||
sed -i /helpers.js/d GITIGNORE
|
|
||||||
|
|
||||||
popd
|
|
||||||
'';
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
# mkdir -p $out/node_modules
|
|
||||||
mv deps/@quri/squiggle-lang/GITIGNORE deps/@quri/squiggle-lang/.gitignore
|
|
||||||
|
|
||||||
# annoying hack because permissions on transitive dependencies later on
|
|
||||||
mv deps/@quri/squiggle-lang/node_modules deps/@quri/squiggle-lang/NODE_MODULES
|
|
||||||
mv deps/node_modules deps/@quri/squiggle-lang
|
|
||||||
|
|
||||||
# the proper install phase
|
|
||||||
cp -r deps/@quri/squiggle-lang/. $out
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
lang-test = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-lang-test";
|
|
||||||
src = lang-build;
|
|
||||||
buildInputs = buildInputsCommon;
|
|
||||||
buildPhase = ''
|
|
||||||
yarn --offline test
|
|
||||||
'';
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -r . $out
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
lang-bundle = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-lang-bundle";
|
|
||||||
src = lang-test;
|
|
||||||
buildInputs = buildInputsCommon;
|
|
||||||
buildPhase = ''
|
|
||||||
yarn --offline bundle
|
|
||||||
'';
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -r dist $out
|
|
||||||
cp *.json $out/dist
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
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;
|
|
||||||
components-yarnPackage = pkgs.mkYarnPackage {
|
|
||||||
name = "squiggle-components_source";
|
|
||||||
buildInputs = buildInputsCommon;
|
|
||||||
src = ./packages/components;
|
|
||||||
packageJSON = componentsPackageJson;
|
|
||||||
yarnLock = ./yarn.lock;
|
|
||||||
packageResolutions."@quri/squiggle-lang" = lang-build;
|
|
||||||
};
|
|
||||||
components-lint = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-components-lint";
|
|
||||||
src = components-yarnPackage
|
|
||||||
+ "/libexec/@quri/squiggle-components/deps/@quri/squiggle-components";
|
|
||||||
buildInputs = buildInputsCommon ++ prettierCommon;
|
|
||||||
buildPhase = "yarn lint";
|
|
||||||
installPhase = "mkdir -p $out";
|
|
||||||
};
|
|
||||||
components-package-build = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-components-package-build";
|
|
||||||
src = components-yarnPackage + "/libexec/@quri/squiggle-components";
|
|
||||||
buildInputs = buildInputsCommon;
|
|
||||||
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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
components-site-build = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-components-storybook";
|
|
||||||
src = components-package-build;
|
|
||||||
buildInputs = buildInputsCommon;
|
|
||||||
buildPhase = "yarn build:storybook";
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
|
|
||||||
# patching .gitignore so flake keeps build artefacts
|
|
||||||
sed -i /build/d .gitignore
|
|
||||||
sed -i /storybook-static/d .gitignore
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
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-build;
|
|
||||||
packageResolutions."@quri/squiggle-components" =
|
|
||||||
components-package-build;
|
|
||||||
workspaceDependencies = [ lang-yarnPackage components-yarnPackage ];
|
|
||||||
};
|
|
||||||
website-lint = pkgs.stdenv.mkDerivation {
|
|
||||||
name = "squiggle-website-lint";
|
|
||||||
buildInputs = buildInputsCommon ++ prettierCommon;
|
|
||||||
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 = buildInputsCommon;
|
|
||||||
src = website-yarnPackage + "/libexec/squiggle-website";
|
|
||||||
buildPhase = ''
|
|
||||||
pushd deps/squiggle-website
|
|
||||||
yarn --offline build
|
|
||||||
popd
|
|
||||||
'';
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -r $src/build $out
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
in rec {
|
in rec {
|
||||||
|
|
||||||
checks = flake-utils.lib.flattenTree {
|
checks = flake-utils.lib.flattenTree {
|
||||||
lang-lint = lang-lint;
|
lang-lint = lang.lang-lint;
|
||||||
lang-test = lang-test;
|
lang-test = lang.lang-test;
|
||||||
components-lint = components-lint;
|
components-lint = components.components-lint;
|
||||||
docusaurus-lint = website-lint;
|
docusaurus-lint = website.website-lint;
|
||||||
};
|
};
|
||||||
packages = flake-utils.lib.flattenTree {
|
packages = flake-utils.lib.flattenTree {
|
||||||
default = website;
|
default = website.website;
|
||||||
lang-bundle = lang-bundle;
|
lang-bundle = lang.lang-bundle;
|
||||||
components = components-package-build;
|
components = components.components-package-build;
|
||||||
storybook = components-site-build;
|
storybook = components.components-site-build;
|
||||||
docs-site = website;
|
docs-site = website.website;
|
||||||
|
};
|
||||||
|
|
||||||
|
# nix develop
|
||||||
|
devShells = flake-utils.lib.flattenTree {
|
||||||
|
default = (import ./nix/shell.nix { inherit pkgs; }).shell;
|
||||||
};
|
};
|
||||||
|
|
||||||
# herc
|
# herc
|
||||||
|
@ -287,7 +77,7 @@
|
||||||
lang.outputs = {
|
lang.outputs = {
|
||||||
squiggle-lang-lint = checks.${hciSystem}.lang-lint;
|
squiggle-lang-lint = checks.${hciSystem}.lang-lint;
|
||||||
squiggle-lang-test = checks.${hciSystem}.lang-test;
|
squiggle-lang-test = checks.${hciSystem}.lang-test;
|
||||||
squiggle-lang-build = lang-build;
|
squiggle-lang-build = lang.lang-build;
|
||||||
squiggle-lang-bundle = packages.${hciSystem}.lang-bundle;
|
squiggle-lang-bundle = packages.${hciSystem}.lang-bundle;
|
||||||
};
|
};
|
||||||
components.outputs = {
|
components.outputs = {
|
||||||
|
@ -302,21 +92,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# nix develop
|
|
||||||
devShells = flake-utils.lib.flattenTree {
|
|
||||||
default = pkgs.mkShell {
|
|
||||||
name = "squiggle-wasm-development-shell";
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
wasm-pack
|
|
||||||
cargo
|
|
||||||
cargo-generate
|
|
||||||
yarn
|
|
||||||
rustup
|
|
||||||
pkg-config
|
|
||||||
openssl
|
|
||||||
nixfmt
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
9
nix/shell.nix
Normal file
9
nix/shell.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ pkgs }:
|
||||||
|
with pkgs;
|
||||||
|
{
|
||||||
|
shell = pkgs.mkShell {
|
||||||
|
name = "SQUIGGLE_yarn-wasm-devshell";
|
||||||
|
buildInputs =
|
||||||
|
[ wasm-pack cargo yarn nodejs rustup pkg-config openssl nixfmt ];
|
||||||
|
};
|
||||||
|
}
|
64
nix/squiggle-components.nix
Normal file
64
nix/squiggle-components.nix
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{ pkgs, common, lang }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
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;
|
||||||
|
components-yarnPackage = pkgs.mkYarnPackage {
|
||||||
|
name = "squiggle-components_source";
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
src = ./packages/components;
|
||||||
|
packageJSON = componentsPackageJson;
|
||||||
|
yarnLock = ./yarn.lock;
|
||||||
|
packageResolutions."@quri/squiggle-lang" = lang.lang-build;
|
||||||
|
};
|
||||||
|
components-lint = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-components-lint";
|
||||||
|
src = components-yarnPackage
|
||||||
|
+ "/libexec/@quri/squiggle-components/deps/@quri/squiggle-components";
|
||||||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||||||
|
buildPhase = "yarn lint";
|
||||||
|
installPhase = "mkdir -p $out";
|
||||||
|
};
|
||||||
|
components-package-build = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-components-package-build";
|
||||||
|
src = components-yarnPackage + "/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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
components-site-build = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-components-storybook";
|
||||||
|
src = components-package-build;
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = "yarn build:storybook";
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
|
||||||
|
# patching .gitignore so flake keeps build artefacts
|
||||||
|
sed -i /build/d .gitignore
|
||||||
|
sed -i /storybook-static/d .gitignore
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
118
nix/squiggle-lang.nix
Normal file
118
nix/squiggle-lang.nix
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
{ system, pkgs, common, gentype }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
# packages in subrepos
|
||||||
|
lang-yarnPackage = pkgs.mkYarnPackage {
|
||||||
|
name = "squiggle-lang_source";
|
||||||
|
src = ./packages/squiggle-lang;
|
||||||
|
packageJSON = ./packages/squiggle-lang/package.json;
|
||||||
|
yarnLock = ./yarn.lock;
|
||||||
|
# extraBuildInputs = prettierCommon;
|
||||||
|
pkgConfig = {
|
||||||
|
rescript = {
|
||||||
|
buildInputs = common.which ++ [ pkgs.gcc_multi ];
|
||||||
|
postInstall = ''
|
||||||
|
echo "PATCHELF'ING RESCRIPT EXECUTABLES (INCL NINJA)"
|
||||||
|
# Patching interpreter for linux/*.exe's
|
||||||
|
THE_LD=$(patchelf --print-interpreter $(which mkdir))
|
||||||
|
patchelf --set-interpreter $THE_LD linux/*.exe && echo "- patched interpreter for linux/*.exe's"
|
||||||
|
|
||||||
|
# Replacing needed shared library for linux/ninja.exe
|
||||||
|
THE_SO=$(find /nix/store/*/lib64 -name libstdc++.so.6 | head -n 1)
|
||||||
|
patchelf --replace-needed libstdc++.so.6 $THE_SO linux/ninja.exe && echo "- replaced needed for linux/ninja.exe"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
bisect_ppx = {
|
||||||
|
buildInputs =
|
||||||
|
common.which; # ++ (with pkgs; [ ocaml nodePackages.esy ocamlPackages.bisect_ppx ]);
|
||||||
|
postInstall = ''
|
||||||
|
echo "PATCHELF'ING BISECT_PPX EXECUTABLE"
|
||||||
|
THE_LD=$(patchelf --print-interpreter $(which mkdir))
|
||||||
|
patchelf --set-interpreter $THE_LD bin/linux/ppx
|
||||||
|
patchelf --set-interpreter $THE_LD bin/linux/bisect-ppx-report
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
gentype = {
|
||||||
|
postInstall = ''
|
||||||
|
mv gentype.exe ELFLESS-gentype.exe
|
||||||
|
cp ${
|
||||||
|
gentype.outputs.defaultPackage."${system}"
|
||||||
|
}/GenType.exe gentype.exe
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lang-lint = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-lint";
|
||||||
|
src = lang-yarnPackage
|
||||||
|
+ "/libexec/@quri/squiggle-lang/deps/@quri/squiggle-lang";
|
||||||
|
buildInputs = common.buildInputs ++ common.prettier;
|
||||||
|
buildPhase = ''
|
||||||
|
yarn lint:prettier
|
||||||
|
yarn lint:rescript
|
||||||
|
'';
|
||||||
|
installPhase = "mkdir -p $out";
|
||||||
|
};
|
||||||
|
lang-build = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-build";
|
||||||
|
# `peggy` is in the `node_modules` that's adjacent to `deps`.
|
||||||
|
src = lang-yarnPackage + "/libexec/@quri/squiggle-lang";
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
mv node_modules deps
|
||||||
|
pushd deps/@quri/squiggle-lang
|
||||||
|
yarn --offline build:peggy
|
||||||
|
yarn --offline build:rescript
|
||||||
|
yarn --offline build:typescript
|
||||||
|
|
||||||
|
# custom gitignore so that the flake keeps build artefacts
|
||||||
|
mv .gitignore GITIGNORE
|
||||||
|
sed -i /Reducer_Peggy_GeneratedParser.js/d GITIGNORE
|
||||||
|
sed -i /\*.bs.js/d GITIGNORE
|
||||||
|
sed -i /\*.gen.ts/d GITIGNORE
|
||||||
|
sed -i /\*.gen.tsx/d GITIGNORE
|
||||||
|
sed -i /\*.gen.js/d GITIGNORE
|
||||||
|
sed -i /helpers.js/d GITIGNORE
|
||||||
|
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
# mkdir -p $out/node_modules
|
||||||
|
mv deps/@quri/squiggle-lang/GITIGNORE deps/@quri/squiggle-lang/.gitignore
|
||||||
|
|
||||||
|
# annoying hack because permissions on transitive dependencies later on
|
||||||
|
mv deps/@quri/squiggle-lang/node_modules deps/@quri/squiggle-lang/NODE_MODULES
|
||||||
|
mv deps/node_modules deps/@quri/squiggle-lang
|
||||||
|
|
||||||
|
# the proper install phase
|
||||||
|
cp -r deps/@quri/squiggle-lang/. $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
lang-test = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-test";
|
||||||
|
src = lang-build;
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
yarn --offline test
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r . $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
lang-bundle = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "squiggle-lang-bundle";
|
||||||
|
src = lang-test;
|
||||||
|
buildInputs = common.buildInputs;
|
||||||
|
buildPhase = ''
|
||||||
|
yarn --offline bundle
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -r dist $out
|
||||||
|
cp *.json $out/dist
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
45
nix/squiggle-website.nix
Normal file
45
nix/squiggle-website.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ pkgs, common, lang, components }:
|
||||||
|
|
||||||
|
rec {
|
||||||
|
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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user