* feat: add nu (nushell) support * add worker tests * deactivate tables and non-any types below top-level full support will come in V1 for V0 it's better to keep things minimal and simple * add syntax highlighting used python's grammar, since nushell isn't supported by monaco nor svelte-highlights for V1 nu will get it`s own grammar * add logo * partially implement plugin support * change logo + ability to deploy + nsjail draft * static variables + get_resource + get_variable * lsp/dev.nu + initial nu lsp (not working yet) * make it work with nsjail * nullguard * Much more flexible signature parsing and better error-messages * add init script * rename nulsp to nu * install nu to dockerfile * fix merge * implement Default for MainArgSignature * stage NU_CACHE_DIR * improve dockerfiles * dev.nu for parser-wasm + flake.nix * update code for windows * add nushell to flake * upload Cargo.lock * make build.sh work on nixos * build wasm cli parsers * add docs to README_DEV.md * add helper script docker/dev.nu * improve docker/dev.nu * fix windows * commit frontend/package(lock).json * update cargo.lock * correctly update cargo.lock * remove lsp * update flake.nix to include svelte server and nushell * Revert base.sql to main * remove PLUGIN_USE_RE * make CARGO_PATH private * add nu to cli * Change flags to build wasm-nu-parser * remove flake.nix from parser-wasm * update wasm-build target * remove unused import * add cli support for nu * update github workflows * wasm-build 0.17 -> 0.19 * update build script * update cargo.lock * Fix typographical error * update Cargo.lock * update ENV_SETTINGS * use published nu parser * update package.lock * rewrite parser in tree-sitter * implement parser from scratch * polishing * change init script to match new parser * fix imports * fix cli build * fix cli build * merge * update wasm * use MiniPulledJob * update cli * change cli wasm schema * change cli * update deno.json * make wasm modules load lazily * regenerate parsers * remove leftover * update cargo.lock * clean up dnt.ts * add docs to cli/test.nu * add schema validation option * add Nu to try_validate_schema * reference frontend to new parser version
249 lines
7.9 KiB
Nix
249 lines
7.9 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
rust-overlay.url = "github:oxalica/rust-overlay";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils, rust-overlay }:
|
|
flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config.allowUnfree = true;
|
|
overlays = [ (import rust-overlay) ];
|
|
};
|
|
rust = pkgs.rust-bin.stable.latest.default.override {
|
|
extensions = [
|
|
"rust-src" # for rust-analyzer
|
|
"rust-analyzer"
|
|
];
|
|
};
|
|
buildInputs = with pkgs; [
|
|
openssl
|
|
openssl.dev
|
|
libxml2.dev
|
|
xmlsec.dev
|
|
libxslt.dev
|
|
libtool
|
|
nodejs
|
|
postgresql
|
|
pkg-config
|
|
cmake
|
|
];
|
|
PKG_CONFIG_PATH = pkgs.lib.makeSearchPath "lib/pkgconfig"
|
|
(with pkgs; [ openssl.dev libxml2.dev xmlsec.dev libxslt.dev ]);
|
|
RUSTY_V8_ARCHIVE = let
|
|
version = "130.0.1";
|
|
target = pkgs.hostPlatform.rust.rustcTarget;
|
|
sha256 = {
|
|
x86_64-linux =
|
|
"sha256-qc25H3Aj2KRhsAZ+2SD1c4RmweVK07oW71opZXRuUoc=";
|
|
aarch64-linux =
|
|
"sha256-qc25H3Aj2KRhsAZ+2SD1c4RmweVK07oW71opZXRuUoc=";
|
|
x86_64-darwin = pkgs.lib.fakeHash;
|
|
aarch64-darwin =
|
|
"sha256-d1QTLt8gOUFxACes4oyIYgDF/srLOEk+5p5Oj1ECajQ=";
|
|
}.${system};
|
|
in pkgs.fetchurl {
|
|
name = "librusty_v8-${version}";
|
|
url =
|
|
"https://github.com/denoland/rusty_v8/releases/download/v${version}/librusty_v8_release_${target}.a.gz";
|
|
inherit sha256;
|
|
};
|
|
in {
|
|
# Enter by `nix develop .#wasm`
|
|
devShells."wasm" = pkgs.mkShell {
|
|
buildInputs = buildInputs ++ (with pkgs; [
|
|
(rust-bin.nightly.latest.default.override {
|
|
extensions = [
|
|
"rust-src" # for rust-analyzer
|
|
"rust-analyzer"
|
|
];
|
|
targets = [ "wasm32-unknown-unknown" ];
|
|
})
|
|
wasm-pack
|
|
deno
|
|
]);
|
|
};
|
|
|
|
devShells.default = pkgs.mkShell {
|
|
buildInputs = buildInputs ++ (with pkgs; [
|
|
rust
|
|
git
|
|
xcaddy
|
|
sqlx-cli
|
|
flock
|
|
sccache
|
|
deno
|
|
python3
|
|
python3Packages.pip
|
|
go
|
|
bun
|
|
uv
|
|
nushell
|
|
dotnet-sdk_9
|
|
oracle-instantclient
|
|
svelte-language-server
|
|
]);
|
|
packages = [
|
|
(pkgs.writeScriptBin "wm-caddy" ''
|
|
cd ./frontend
|
|
xcaddy build $* \
|
|
--with github.com/mholt/caddy-l4@145ec36251a44286f05a10d231d8bfb3a8192e09 \
|
|
--with github.com/RussellLuo/caddy-ext/layer4@ab1e18cfe426012af351a68463937ae2e934a2a1
|
|
'')
|
|
(pkgs.writeScriptBin "wm-build" ''
|
|
cd ./frontend
|
|
npm install
|
|
npm run ${
|
|
if pkgs.stdenv.isDarwin then
|
|
"generate-backend-client-mac"
|
|
else
|
|
"generate-backend-client"
|
|
}
|
|
npm run build $*
|
|
'')
|
|
(pkgs.writeScriptBin "wm-migrate" ''
|
|
cd ./backend
|
|
sqlx migrate run
|
|
'')
|
|
(pkgs.writeScriptBin "wm-setup" ''
|
|
sqlx database create
|
|
wm-build
|
|
wm-caddy
|
|
wm-migrate
|
|
'')
|
|
(pkgs.writeScriptBin "wm-reset" ''
|
|
sqlx database drop -f
|
|
sqlx database create
|
|
wm-migrate
|
|
'')
|
|
(pkgs.writeScriptBin "wm-bench" ''
|
|
deno run -A benchmarks/main.ts -e admin@windmill.dev -p changeme $*
|
|
'')
|
|
(pkgs.writeScriptBin "wm" ''
|
|
cd ./frontend
|
|
npm run dev $*
|
|
'')
|
|
];
|
|
|
|
inherit PKG_CONFIG_PATH RUSTY_V8_ARCHIVE;
|
|
NODE_ENV = "development";
|
|
NODE_OPTIONS = "--max-old-space-size=16384";
|
|
DATABASE_URL = "postgres://postgres:changeme@127.0.0.1:5432/";
|
|
REMOTE = "http://127.0.0.1:8000";
|
|
REMOTE_LSP = "http://127.0.0.1:3001";
|
|
RUSTC_WRAPPER = "${pkgs.sccache}/bin/sccache";
|
|
DENO_PATH = "${pkgs.deno}/bin/deno";
|
|
GO_PATH = "${pkgs.go}/bin/go";
|
|
BUN_PATH = "${pkgs.bun}/bin/bun";
|
|
UV_PATH = "${pkgs.uv}/bin/uv";
|
|
NU_PATH = "${pkgs.nushell}/bin/nu";
|
|
FLOCK_PATH = "${pkgs.flock}/bin/flock";
|
|
CARGO_PATH = "${rust}/bin/cargo";
|
|
DOTNET_PATH = "${pkgs.dotnet-sdk_9}/bin/dotnet";
|
|
DOTNET_ROOT = "${pkgs.dotnet-sdk_9}/share/dotnet";
|
|
ORACLE_LIB_DIR = "${pkgs.oracle-instantclient.lib}/lib";
|
|
};
|
|
packages.default = self.packages.${system}.windmill;
|
|
packages.windmill-client = pkgs.buildNpmPackage {
|
|
name = "windmill-client";
|
|
version = (pkgs.lib.strings.trim (builtins.readFile ./version.txt));
|
|
|
|
src = pkgs.nix-gitignore.gitignoreSource [ ] ./frontend;
|
|
nativeBuildInputs = with pkgs; [ pkg-config ];
|
|
buildInputs = with pkgs; [ nodejs pixman cairo pango ];
|
|
doCheck = false;
|
|
|
|
npmDepsHash = "sha256-NXk9mnf74+/k0i3goqU8Zi/jr5b/bmW+HWRLJCI2CX8=";
|
|
npmBuild = "npm run build";
|
|
|
|
postUnpack = ''
|
|
mkdir -p ./backend/windmill-api/
|
|
cp ${
|
|
./backend/windmill-api/openapi.yaml
|
|
} ./backend/windmill-api/openapi.yaml
|
|
cp ${./openflow.openapi.yaml} ./openflow.openapi.yaml
|
|
'';
|
|
preBuild = ''
|
|
npm run ${
|
|
if pkgs.stdenv.isDarwin then
|
|
"generate-backend-client-mac"
|
|
else
|
|
"generate-backend-client"
|
|
}
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/build
|
|
cp -r build $out
|
|
'';
|
|
|
|
NODE_OPTIONS = "--max-old-space-size=8192";
|
|
};
|
|
packages.windmill = pkgs.rustPlatform.buildRustPackage {
|
|
pname = "windmill";
|
|
version = (pkgs.lib.strings.trim (builtins.readFile ./version.txt));
|
|
|
|
src = ./backend;
|
|
nativeBuildInputs = buildInputs
|
|
++ [ self.packages.${system}.windmill-client pkgs.perl ]
|
|
++ pkgs.lib.optionals pkgs.stdenv.isDarwin [
|
|
# Additional darwin specific inputs can be set here
|
|
pkgs.libiconv
|
|
pkgs.darwin.apple_sdk.frameworks.SystemConfiguration
|
|
];
|
|
|
|
cargoLock = {
|
|
lockFile = ./backend/Cargo.lock;
|
|
outputHashes = {
|
|
"php-parser-rs-0.1.3" =
|
|
"sha256-ZeI3KgUPmtjlRfq6eAYveqt8Ay35gwj6B9iOQRjQa9A=";
|
|
"progenitor-0.3.0" =
|
|
"sha256-F6XRZFVIN6/HfcM8yI/PyNke45FL7jbcznIiqj22eIQ=";
|
|
"tinyvector-0.1.0" =
|
|
"sha256-NYGhofU4rh+2IAM+zwe04YQdXY8Aa4gTmn2V2HtzRfI=";
|
|
};
|
|
};
|
|
|
|
buildFeatures = [
|
|
"enterprise"
|
|
"enterprise_saml"
|
|
"stripe"
|
|
"embedding"
|
|
"parquet"
|
|
"prometheus"
|
|
"openidconnect"
|
|
"cloud"
|
|
"jemalloc"
|
|
"tantivy"
|
|
"deno_core"
|
|
"license"
|
|
"http_trigger"
|
|
"zip"
|
|
"oauth2"
|
|
"kafka"
|
|
"otel"
|
|
"dind"
|
|
"php"
|
|
"mysql"
|
|
"mssql"
|
|
"bigquery"
|
|
"websocket"
|
|
"python"
|
|
"smtp"
|
|
"csharp"
|
|
"static_frontend"
|
|
"rust"
|
|
];
|
|
doCheck = false;
|
|
|
|
inherit PKG_CONFIG_PATH RUSTY_V8_ARCHIVE;
|
|
SQLX_OFFLINE = true;
|
|
FRONTEND_BUILD_DIR =
|
|
"${self.packages.${system}.windmill-client}/build";
|
|
};
|
|
});
|
|
}
|