diff --git a/flake.nix b/flake.nix index 12cdf69..5cc7e3c 100644 --- a/flake.nix +++ b/flake.nix @@ -89,6 +89,43 @@ } ); + mkZedExtension = + system: + let + pkgs = mkPkgs system; + toolchain = pkgs.rust-bin.stable.latest.default.override { + targets = [ "wasm32-wasip1" ]; + }; + craneLib = (crane.mkLib pkgs).overrideToolchain toolchain; + extensionSrc = ./zed-extension; + vendoredDeps = craneLib.vendorCargoDeps { src = extensionSrc; }; + in + pkgs.stdenv.mkDerivation { + pname = "streamd-zed-extension"; + version = "0.0.1"; + src = extensionSrc; + + nativeBuildInputs = [ toolchain ]; + + buildPhase = '' + export HOME=$TMPDIR + mkdir -p .cargo + cat > .cargo/config.toml < Self { + StreamdExtension + } + + fn language_server_command( + &mut self, + _language_server_id: &LanguageServerId, + _worktree: &Worktree, + ) -> Result { + Ok(Command { + command: "streamd".into(), + args: vec!["lsp".into()], + env: vec![], + }) + } +} + +zed::register_extension!(StreamdExtension);