commit
142633533e
13
flake.nix
13
flake.nix
@ -14,11 +14,18 @@
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
|
||||
cargoBuildInputs = with pkgs; lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.CoreServices
|
||||
];
|
||||
|
||||
rustlings =
|
||||
pkgs.rustPlatform.buildRustPackage {
|
||||
name = "rustlings";
|
||||
version = "5.3.0";
|
||||
|
||||
buildInputs = cargoBuildInputs;
|
||||
|
||||
src = with pkgs.lib; cleanSourceWith {
|
||||
src = self;
|
||||
# a function that returns a bool determining if the path should be included in the cleaned source
|
||||
@ -42,12 +49,16 @@
|
||||
in
|
||||
{
|
||||
devShell = pkgs.mkShell {
|
||||
RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
cargo
|
||||
rustc
|
||||
rust-analyzer
|
||||
rustlings
|
||||
];
|
||||
rustfmt
|
||||
clippy
|
||||
] ++ cargoBuildInputs;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
use glob::glob;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::env;
|
||||
use std::error::Error;
|
||||
use std::process::Command;
|
||||
|
||||
@ -64,6 +65,12 @@ impl RustAnalyzerProject {
|
||||
|
||||
/// Use `rustc` to determine the default toolchain
|
||||
pub fn get_sysroot_src(&mut self) -> Result<(), Box<dyn Error>> {
|
||||
// check if RUST_SRC_PATH is set
|
||||
if let Ok(path) = env::var("RUST_SRC_PATH") {
|
||||
self.sysroot_src = path;
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let toolchain = Command::new("rustc")
|
||||
.arg("--print")
|
||||
.arg("sysroot")
|
||||
|
Reference in New Issue
Block a user