nix-config/overlay/plume/default.nix

117 lines
2.5 KiB
Nix
Raw Normal View History

2021-12-16 01:29:00 +01:00
{ naersk, fenix
2022-01-13 18:38:36 +01:00
, stdenv, fetchFromGitHub, buildEnv
2022-02-24 18:50:41 +01:00
, pkg-config, gettext, wasm-pack, wasm-bindgen-cli, binaryen
2021-12-16 01:29:00 +01:00
, openssl, postgresql
}:
let
2022-01-13 18:38:36 +01:00
rust = fenix.complete.withComponents [
2021-12-16 01:29:00 +01:00
"cargo"
"rustc"
];
2022-01-13 18:38:36 +01:00
naersk' = naersk.override {
2021-12-16 01:29:00 +01:00
cargo = rust;
rustc = rust;
};
2022-01-13 18:38:36 +01:00
rust-wasm = with fenix;
2021-12-16 02:14:13 +01:00
combine [
minimal.rustc
minimal.cargo
targets.wasm32-unknown-unknown.latest.rust-std
];
2022-01-13 18:38:36 +01:00
naersk-wasm = naersk.override {
2021-12-16 02:14:13 +01:00
cargo = rust-wasm;
rustc = rust-wasm;
};
2021-12-16 01:29:00 +01:00
conv = fetchFromGitHub {
owner = "DanielKeep";
repo = "rust-conv";
rev = "90a1e85edcc6d63616436a6049b08ba87c76d703";
sha256 = "029xq9cabz3scbmd84b8qkrg0q7x6fm27ijq869lkpq8bwjxvcb6";
};
2022-02-24 18:50:41 +01:00
version = "0.7.1";
2022-01-02 21:32:44 +01:00
2021-12-16 01:29:00 +01:00
src = stdenv.mkDerivation {
2022-01-02 21:32:44 +01:00
pname = "plume-src";
inherit version;
2021-12-16 01:29:00 +01:00
src = fetchFromGitHub {
owner = "Plume-org";
repo = "Plume";
2022-01-02 21:32:44 +01:00
rev = version;
2022-02-24 18:50:41 +01:00
sha256 = "01mgg9ngpjinlwbgm2s287namilm3ddlwpn0hjs6267608vjgi04";
2021-12-16 01:29:00 +01:00
};
phases = [ "unpackPhase" "patchPhase" "installPhase" ];
patches = [
./0001-cargo-update.patch
];
postPatch = ''
ln -s ${conv} rust-conv
'';
installPhase = "cp -ar . $out";
};
2022-01-13 18:38:36 +01:00
plume = naersk'.buildPackage {
2021-12-16 01:29:00 +01:00
pname = "plume";
2022-01-02 21:32:44 +01:00
inherit src version;
2021-12-16 01:29:00 +01:00
nativeBuildInputs = [
pkg-config gettext
];
buildInputs = [
openssl
postgresql
];
2021-12-23 22:26:05 +01:00
overrideMain = oa: {
installPhase = ''
${oa.installPhase}
mkdir -p $out/share/plume
cp -ar static $out/share/plume/
'';
};
2021-12-16 01:29:00 +01:00
};
2022-01-13 18:38:36 +01:00
plm = naersk'.buildPackage {
2021-12-16 01:29:00 +01:00
pname = "plm";
root = src;
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
postgresql
];
cargoBuildOptions = x: x ++ [ "--package=plume-cli" ];
};
2021-12-16 02:14:13 +01:00
2022-01-13 18:38:36 +01:00
plume-front = naersk-wasm.buildPackage {
2021-12-16 02:14:13 +01:00
pname = "plume-front";
root = src;
nativeBuildInputs = [
2022-02-24 18:50:41 +01:00
gettext wasm-pack wasm-bindgen-cli binaryen
2021-12-16 02:14:13 +01:00
];
CARGO_BUILD_TARGET = "wasm32-unknown-unknown";
cargoBuildOptions = x:
x ++ [
"--package=plume-front"
];
copyLibs = true;
2021-12-23 22:26:05 +01:00
overrideMain = oa: {
buildPhase = ''
2022-02-24 18:50:41 +01:00
wasm-pack build --mode no-install --target web --release plume-front
2021-12-23 22:26:05 +01:00
'';
installPhase = ''
mkdir -p $out/share/plume/static
cp -a plume-front/pkg/*.{js,ts,wasm} $out/share/plume/static/
'';
};
2021-12-16 02:14:13 +01:00
};
in buildEnv {
2021-12-16 01:29:00 +01:00
name = "plume-env";
2021-12-16 02:14:13 +01:00
paths = [ plume plume-front plm ];
2021-12-16 01:29:00 +01:00
passthru = { inherit plume plm; };
}