nix-config/overlay/plume/default.nix

128 lines
2.8 KiB
Nix
Raw Normal View History

2021-12-16 01:29:00 +01:00
{ naersk, fenix
, system, stdenv, fetchFromGitHub, buildEnv
2021-12-23 22:26:05 +01:00
, pkg-config, gettext, wasm-pack, wasm-bindgen-cli
2021-12-16 01:29:00 +01:00
, openssl, postgresql
}:
let
rust = fenix.packages.${system}.complete.withComponents [
"cargo"
"rustc"
];
naersk-lib = naersk.lib."${system}".override {
cargo = rust;
rustc = rust;
};
2021-12-16 02:14:13 +01:00
rust-wasm = with fenix.packages.${system};
combine [
minimal.rustc
minimal.cargo
targets.wasm32-unknown-unknown.latest.rust-std
];
naersk-lib-wasm = naersk.lib."${system}".override {
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-01-02 21:32:44 +01:00
version = "0.7.0";
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;
sha256 = "00hl81dvcybbybwfha7x2y8mz4qlmqip76610va73j6xcjsvj4fq";
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";
};
plume = naersk-lib.buildPackage {
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
};
plm = naersk-lib.buildPackage {
pname = "plm";
root = src;
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
postgresql
];
cargoBuildOptions = x: x ++ [ "--package=plume-cli" ];
};
2021-12-16 02:14:13 +01:00
plume-front = naersk-lib-wasm.buildPackage {
pname = "plume-front";
root = src;
nativeBuildInputs = [
2021-12-23 22:26:05 +01:00
gettext wasm-pack wasm-bindgen-cli
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 = ''
substituteInPlace plume-front/Cargo.toml \
--replace '"cdylib"' '"cdylib", "rlib"'
cat >>plume-front/Cargo.toml <<EOF
[package.metadata.wasm-pack.profile.release]
# wasm-opt is missing from nixpkgs
wasm-opt = false
EOF
wasm-pack build --target web --release plume-front
'';
installPhase = ''
${oa.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; };
}