squiggle/nix/squiggle-mc.nix
2022-08-16 22:24:32 -07:00

66 lines
1.9 KiB
Nix

{ pkgs, wasmPkgs, commonFn, naerskFn }:
rec {
common = commonFn pkgs;
rustVersion = "1.61.0";
wasmTarget = "wasm32-unknown-unknown";
rust = pkgs.rust-bin.stable.${rustVersion}.default.override {
targets = [ wasmTarget ];
};
naersk = naerskFn { inherit pkgs rust; };
mc-pkg = naersk.buildPackage {
src = ../packages/mc;
copyLibs = true;
copyBins = true;
CARGO_BUILD_TARGET = wasmTarget;
nativeBuildInputs = common.buildInputs;
};
lib2 = mc-pkg;
rustPkgsWasm = wasmPkgs.rustBuilder.makePackageSet {
rustVersion = rustVersion;
packageFun = import ../packages/mc/Cargo.nix;
target = wasmTarget;
};
lib = (rustPkgsWasm.workspace.quri-squiggle-mc { }).out;
yarn-source = pkgs.mkYarnPackage {
name = "squiggle-mc_yarnsource";
buildInputs = common.buildInputs;
src = ../packages/mc;
packageJSON = ../packages/mc/package.json;
yarnLock = ../yarn.lock;
};
rust-lint = pkgs.stdenv.mkDerivation {
name = "squiggle-mc-lint";
src = yarn-source + "/libexec/@quri/squiggle-mc/deps/@quri/squiggle-mc";
buildInputs = with pkgs; [ rustfmt ];
buildPhase = "rustfmt --check src";
installPhase = "mkdir -p $out";
};
webpack-build-pkg = pkgs.stdenv.mkDerivation {
name = "squiggle-mc-build";
src = yarn-source + "/libexec/@quri/squiggle-mc";
buildInputs = common.buildInputs ++ (with pkgs; [ wasm-pack ]);
buildPhase = ''
pushd deps/@quri/squiggle-mc
sed -i /pkg/d .gitignore
yarn --offline build
popd
'';
installPhase = ''
mkdir -p $out
cp -r deps/@quri/squiggle-mc/. $out
'';
};
firefox-test = pkgs.stdenv.mkDerivation {
name = "squiggle-mc-test";
src = yarn-source + "/libexec/@quri/squiggle-mc/deps/@quri/squiggle-mc";
buildInputs = common.buildInputs
++ (with pkgs; [ geckodriver cargo wasm-pack ]);
buildPhase = "yarn --offline test -- --firefox";
installPhase = "mkdir -p $out";
};
}