2023-07-15 17:15:38 +00:00
|
|
|
{ lib
|
|
|
|
, rustPlatform
|
|
|
|
, fetchFromGitHub
|
|
|
|
, buildNpmPackage
|
|
|
|
, bash
|
2023-10-09 19:29:22 +00:00
|
|
|
, cmake
|
2023-07-15 17:15:38 +00:00
|
|
|
, cairo
|
|
|
|
, deno
|
|
|
|
, fetchurl
|
|
|
|
, go
|
|
|
|
, lld
|
|
|
|
, makeWrapper
|
|
|
|
, nsjail
|
|
|
|
, openssl
|
|
|
|
, pango
|
|
|
|
, pixman
|
|
|
|
, pkg-config
|
|
|
|
, python3
|
|
|
|
, rust
|
|
|
|
, rustfmt
|
|
|
|
, stdenv
|
|
|
|
, swagger-cli
|
|
|
|
}:
|
|
|
|
|
|
|
|
let
|
|
|
|
pname = "windmill";
|
2023-10-19 13:55:26 +00:00
|
|
|
version = "1.184.0";
|
2023-07-15 17:15:38 +00:00
|
|
|
|
|
|
|
fullSrc = fetchFromGitHub {
|
|
|
|
owner = "windmill-labs";
|
2023-10-09 19:29:22 +00:00
|
|
|
repo = "windmill";
|
2023-07-15 17:15:38 +00:00
|
|
|
rev = "v${version}";
|
2023-10-19 13:55:26 +00:00
|
|
|
hash = "sha256-K7nF2B52dEzvdZxj21i89uJveh3/cM7uq7y/EE45ooY";
|
2023-07-15 17:15:38 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
pythonEnv = python3.withPackages (ps: [ ps.pip-tools ]);
|
|
|
|
|
|
|
|
frontend-build = buildNpmPackage {
|
|
|
|
inherit version;
|
|
|
|
|
|
|
|
pname = "windmill-ui";
|
|
|
|
src = fullSrc;
|
|
|
|
|
2023-08-04 22:07:22 +00:00
|
|
|
sourceRoot = "${fullSrc.name}/frontend";
|
2023-07-15 17:15:38 +00:00
|
|
|
|
2023-10-19 13:55:26 +00:00
|
|
|
npmDepsHash = "sha256-pGTJfVXo7nPIzwVIVxOm1pTd+7CbnKCnaQMYC+GkSAI=";
|
|
|
|
|
|
|
|
# without these you get a
|
|
|
|
# FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
|
|
|
|
env.NODE_OPTIONS="--max-old-space-size=8192";
|
2023-07-15 17:15:38 +00:00
|
|
|
|
|
|
|
preBuild = ''
|
|
|
|
npm run generate-backend-client
|
|
|
|
'';
|
|
|
|
|
|
|
|
buildInputs = [ pixman cairo pango ];
|
|
|
|
nativeBuildInputs = [ python3 pkg-config ];
|
|
|
|
|
|
|
|
installPhase = ''
|
|
|
|
mkdir -p $out/share
|
|
|
|
mv build $out/share/windmill-frontend
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
in
|
|
|
|
rustPlatform.buildRustPackage {
|
|
|
|
inherit pname version;
|
|
|
|
src = "${fullSrc}/backend";
|
|
|
|
|
2023-08-10 07:59:29 +00:00
|
|
|
env = {
|
|
|
|
SQLX_OFFLINE = "true";
|
|
|
|
RUSTY_V8_ARCHIVE =
|
|
|
|
let
|
|
|
|
arch = rust.toRustTarget stdenv.hostPlatform;
|
|
|
|
fetch_librusty_v8 = args:
|
|
|
|
fetchurl {
|
|
|
|
name = "librusty_v8-${args.version}";
|
|
|
|
url = "https://github.com/denoland/rusty_v8/releases/download/v${args.version}/librusty_v8_release_${arch}.a";
|
|
|
|
sha256 = args.shas.${stdenv.hostPlatform.system} or (throw "Unsupported platform ${stdenv.hostPlatform.system}");
|
|
|
|
meta = { inherit (args) version; };
|
|
|
|
};
|
|
|
|
in
|
|
|
|
fetch_librusty_v8 {
|
2023-10-09 19:29:22 +00:00
|
|
|
version = "0.74.3";
|
2023-08-10 07:59:29 +00:00
|
|
|
shas = {
|
2023-10-09 19:29:22 +00:00
|
|
|
x86_64-linux = "sha256-8pa8nqA6rbOSBVnp2Q8/IQqh/rfYQU57hMgwU9+iz4A=";
|
|
|
|
aarch64-linux = "sha256-3kXOV8rlCNbNBdXgOtd3S94qO+JIKyOByA4WGX+XVP0=";
|
|
|
|
x86_64-darwin = "sha256-iBBVKZiSoo08YEQ8J/Rt1/5b7a+2xjtuS6QL/Wod5nQ=";
|
|
|
|
aarch64-darwin = "sha256-Djnuc3l/jQKvBf1aej8LG5Ot2wPT0m5Zo1B24l1UHsM=";
|
2023-07-15 17:15:38 +00:00
|
|
|
};
|
|
|
|
};
|
2023-08-10 07:59:29 +00:00
|
|
|
};
|
2023-07-15 17:15:38 +00:00
|
|
|
|
|
|
|
cargoLock = {
|
|
|
|
lockFile = ./Cargo.lock;
|
|
|
|
outputHashes = {
|
2023-08-10 07:59:29 +00:00
|
|
|
"progenitor-0.3.0" = "sha256-F6XRZFVIN6/HfcM8yI/PyNke45FL7jbcznIiqj22eIQ=";
|
2023-07-15 17:15:38 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
patches = [
|
|
|
|
./swagger-cli.patch
|
|
|
|
./run.go.config.proto.patch
|
|
|
|
./run.python3.config.proto.patch
|
|
|
|
./run.bash.config.proto.patch
|
|
|
|
];
|
|
|
|
|
|
|
|
postPatch = ''
|
2023-10-19 13:55:26 +00:00
|
|
|
substituteInPlace windmill-worker/src/bash_executor.rs \
|
2023-07-15 17:15:38 +00:00
|
|
|
--replace '"/bin/bash"' '"${bash}/bin/bash"'
|
2023-08-10 07:59:29 +00:00
|
|
|
|
|
|
|
substituteInPlace windmill-api/src/lib.rs \
|
|
|
|
--replace 'unknown-version' 'v${version}'
|
|
|
|
|
|
|
|
substituteInPlace src/main.rs \
|
|
|
|
--replace 'unknown-version' 'v${version}'
|
2023-07-15 17:15:38 +00:00
|
|
|
'';
|
|
|
|
|
2023-10-09 19:29:22 +00:00
|
|
|
buildInputs = [
|
|
|
|
openssl
|
|
|
|
rustfmt
|
|
|
|
lld
|
|
|
|
];
|
2023-07-15 17:15:38 +00:00
|
|
|
|
2023-10-09 19:29:22 +00:00
|
|
|
nativeBuildInputs = [
|
|
|
|
pkg-config
|
|
|
|
makeWrapper
|
|
|
|
swagger-cli
|
|
|
|
cmake # for libz-ng-sys crate
|
|
|
|
];
|
2023-07-15 17:15:38 +00:00
|
|
|
|
|
|
|
preBuild = ''
|
|
|
|
pushd ..
|
|
|
|
|
|
|
|
mkdir -p frontend/build
|
|
|
|
|
|
|
|
cp -R ${frontend-build}/share/windmill-frontend/* frontend/build
|
|
|
|
cp ${fullSrc}/openflow.openapi.yaml .
|
|
|
|
|
|
|
|
popd
|
|
|
|
'';
|
|
|
|
|
|
|
|
# needs a postgres database running
|
|
|
|
doCheck = false;
|
|
|
|
|
|
|
|
postFixup = ''
|
|
|
|
patchelf --set-rpath ${lib.makeLibraryPath [openssl]} $out/bin/windmill
|
|
|
|
|
|
|
|
wrapProgram "$out/bin/windmill" \
|
|
|
|
--prefix PATH : ${lib.makeBinPath [go pythonEnv deno nsjail bash]} \
|
|
|
|
--set PYTHON_PATH "${pythonEnv}/bin/python3" \
|
|
|
|
--set GO_PATH "${go}/bin/go" \
|
|
|
|
--set DENO_PATH "${deno}/bin/deno" \
|
|
|
|
--set NSJAIL_PATH "${nsjail}/bin/nsjail"
|
|
|
|
'';
|
|
|
|
|
2023-10-09 19:29:22 +00:00
|
|
|
meta = {
|
|
|
|
changelog = "https://github.com/windmill-labs/windmill/blob/${fullSrc.rev}/CHANGELOG.md";
|
|
|
|
description = "Open-source developer platform to turn scripts into workflows and UIs";
|
2023-07-15 17:15:38 +00:00
|
|
|
homepage = "https://windmill.dev";
|
2023-10-09 19:29:22 +00:00
|
|
|
license = lib.licenses.agpl3Only;
|
2023-10-19 13:55:26 +00:00
|
|
|
maintainers = with lib.maintainers; [ dit7ya happysalada ];
|
2023-10-09 19:29:22 +00:00
|
|
|
mainProgram = "windmill";
|
2023-07-15 17:15:38 +00:00
|
|
|
# limited by librusty_v8
|
|
|
|
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
|
|
|
};
|
|
|
|
}
|