{ description = "Helicase — Helix-style modal editing for JetBrains IDEs, with a Helix-as-library oracle for differential testing."; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-utils.url = "github:numtide/flake-utils"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, flake-utils, rust-overlay }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; overlays = [ rust-overlay.overlays.default ]; }; # Match Helix's rust-toolchain.toml (1.90.0 stable + rustfmt, rust-src, # clippy). The oracle links Helix as a library, so we want exactly the # toolchain Helix was developed with. rustToolchain = pkgs.rust-bin.stable."1.90.0".default.override { extensions = [ "rust-src" "rustfmt" "clippy" "rust-analyzer" ]; }; in { devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ # Rust — pinned to match Helix's expectations rustToolchain # JVM toolchain for the eventual Kotlin engine + IntelliJ plugin jdk21 gradle kotlin # Porter: extracts Helix tests into the JSON corpus python3 # VCS — user uses jj over git jujutsu ]; shellHook = '' echo "helicase dev shell" echo " rust: $(rustc --version)" echo " jdk: $(java -version 2>&1 | head -n1)" echo " py: $(python3 --version)" ''; # Tell IntelliJ Platform Plugin Template-style Gradle builds where # the JDK lives, so they don't try to download one. `.home` gives the # canonical Java home for the platform (different layout on Mac vs Linux). JAVA_HOME = pkgs.jdk21.home; }; }); }