mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-18 16:02:10 +00:00
e47dd697f9
* feat: Handle `pip install` by `uv` Dirty and untested, but already something working * Integrate with NSJAIL and prepare fallbacks * Refactor fallback no_uv disable compile and install where no_uv_install and no_uv_compile are a bit more specific * Remove `--disable-pip-version-check` Reason: warning: pip's `--disable-pip-version-check` has no effect * Fix backend compilation error * Pip fallback overwrite UV's cache * Initially refactor cache (No S3) * Support S3 * Remove unused import * Handle flags for NSJAIL * Return deleted flag * Remove verbose mode and enable link-mode=copy * Granural migration of lockfiles Before i realized we dont need it :) * Initial draft (not-working) * Add fallback * Fix bug preventing uv from installing deps '\n' - Love it * Add verbosity indicator * Iterate on feature - Added instance python version - Rework logic * Fix EE build error error[E0599]: no method named `iter` found for tuple `(PyVersion, std::vec::Vec<std::string::String>)` in the current scope * Support S3 * Support NSJAIL * Refactor `get_python` * Make NSJAIL work [Unsafe] config file missed /proc mount causing install phase to fail * Trigger CI * Clean up * Make Actions build it * Trigger CI #2 * Update Dockerfile and clean up * Change fallbacks now there is only no_uv and NOUV * Expose INSTANCE_PYTHON_VERSION through env variable * Change namings * Include py-version to requirements.in Also add comments and make code much cleaner * Use const for python installation dir It was hardcoded before * Pin preinstalled version * Update python_executor.rs * Up to date branch * Create PYCACHE dirs TODO: PY_TAR_DIRS * Fix after merge * Make it safer * Implement USE_SYSTEM_PYTHON * Implement latest_stable option * Load INSTANCE_PYTHON_VERSION on startup * Check for multiple annotations used * Fix Latest Stable button not pressed if selected * Proper error handling for conflict on multiple annotations * Fix merge conflicts * Preinstall 3.11 and Latest Stable * Preinstall latest stable in non-blocking manner * Fix Warning * Gate preinstall logic behind "python" feature * Handle raw_deps properly * Make it work with nsjail * Revert docker-image.yml * Revert Dockerfile * Cleanup + Fixing * Add windows support --------- Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
96 lines
3.0 KiB
Nix
96 lines
3.0 KiB
Nix
{ pkgs ? import <nixpkgs> { } }:
|
|
|
|
/* based on
|
|
https://discourse.nixos.org/t/how-can-i-set-up-my-rust-programming-environment/4501/9
|
|
*/
|
|
let
|
|
rust_overlay = import (builtins.fetchTarball
|
|
"https://github.com/oxalica/rust-overlay/archive/master.tar.gz");
|
|
pkgs = import <nixpkgs> { overlays = [ rust_overlay ]; };
|
|
lib = pkgs.lib;
|
|
stdenv = pkgs.stdenv;
|
|
# TODO: Pin version?
|
|
# rustVersion = "latest";
|
|
rustVersion = "2024-09-30";
|
|
rust = pkgs.rust-bin.nightly.${rustVersion}.default.override {
|
|
extensions = [
|
|
"rust-src" # for rust-analyzer
|
|
"rust-analyzer"
|
|
];
|
|
};
|
|
in pkgs.mkShell {
|
|
|
|
packages = with pkgs; [
|
|
rust
|
|
# rustup
|
|
cargo-watch
|
|
typescript # tsc
|
|
typescript-language-server
|
|
postgresql
|
|
watchexec # used in client's dev.nu
|
|
poetry # for python client
|
|
# uv
|
|
python312Packages.pip-tools # pip-compile
|
|
];
|
|
|
|
# buildInputs = with pkgs; [ xz lzma ];
|
|
|
|
# Add the following lines to set the LD_LIBRARY_PATH
|
|
LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath (with pkgs; [
|
|
xz
|
|
libseccomp
|
|
bzip2
|
|
openssl_3_3
|
|
#
|
|
])}";
|
|
|
|
REMOTE = "http://127.0.0.1:8000";
|
|
REMOTE_LSP = "http://127.0.0.1:3001";
|
|
|
|
DATABASE_URL =
|
|
"postgres://postgres:changeme@127.0.0.1:5432/windmill?sslmode=disable";
|
|
|
|
RUSTC_LINKER = "${pkgs.clang}/bin/clang";
|
|
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER = "${pkgs.clang}/bin/clang";
|
|
|
|
RUSTFLAGS =
|
|
"-C link-arg=-fuse-ld=${pkgs.mold}/bin/mold -Zshare-generics=y -Z threads=4";
|
|
RUSTC_WRAPPER = "${pkgs.sccache}/bin/sccache";
|
|
|
|
# Useful for development
|
|
RUST_LOG = "debug";
|
|
|
|
# ---- Samael ----
|
|
# https://github.com/njaremko/samael/blob/master/flake.nix#L104-L119
|
|
# Otherwise samael crate will fail to build
|
|
# Need to tell bindgen where to find libclang
|
|
LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib";
|
|
|
|
# Set C flags for Rust's bindgen program. Unlike ordinary C
|
|
# compilation, bindgen does not invoke $CC directly. Instead it
|
|
# uses LLVM's libclang. To make sure all necessary flags are
|
|
# included we need to look in a few places.
|
|
# See https://web.archive.org/web/20220523141208/https://hoverbear.org/blog/rust-bindgen-in-nix/
|
|
BINDGEN_EXTRA_CLANG_ARGS =
|
|
"${builtins.readFile "${stdenv.cc}/nix-support/libc-crt1-cflags"} ${
|
|
builtins.readFile "${stdenv.cc}/nix-support/libc-cflags"
|
|
} ${builtins.readFile "${stdenv.cc}/nix-support/cc-cflags"} ${
|
|
builtins.readFile "${stdenv.cc}/nix-support/libcxx-cxxflags"
|
|
} -idirafter ${pkgs.libiconv}/include ${
|
|
lib.optionalString stdenv.cc.isClang
|
|
"-idirafter ${stdenv.cc.cc}/lib/clang/${
|
|
lib.getVersion stdenv.cc.cc
|
|
}/include"
|
|
} ${
|
|
lib.optionalString stdenv.cc.isGNU
|
|
"-isystem ${stdenv.cc.cc}/include/c++/${
|
|
lib.getVersion stdenv.cc.cc
|
|
} -isystem ${stdenv.cc.cc}/include/c++/${
|
|
lib.getVersion stdenv.cc.cc
|
|
}/${stdenv.hostPlatform.config} -idirafter ${stdenv.cc.cc}/lib/gcc/${stdenv.hostPlatform.config}/${
|
|
lib.getVersion stdenv.cc.cc
|
|
}/include"
|
|
}";
|
|
# ---- Samael ----
|
|
}
|