Use `target_nix` when running xtasks in Nix

This commit is contained in:
Ajeet D'Souza 2022-04-11 03:58:35 +05:30
parent b71d33b5c1
commit e6bc1576ca
2 changed files with 8 additions and 5 deletions

1
.gitignore vendored
View File

@ -5,6 +5,7 @@
# Compiled files and executables
debug/
target/
target_nix/
# Backup files generated by rustfmt
**/*.rs.bk

View File

@ -8,11 +8,10 @@ use std::path::PathBuf;
use std::process::{self, Command};
fn main() -> Result<()> {
let nix_enabled = enable_nix();
let dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let dir = dir.parent().with_context(|| format!("could not find workspace root: {}", dir.display()))?;
env::set_current_dir(dir).with_context(|| format!("could not set current directory: {}", dir.display()))?;
let nix_enabled = enable_nix();
let app = App::parse();
match app {
@ -147,8 +146,11 @@ fn enable_nix() -> bool {
println!("Detected Nix in environment, re-running in Nix.");
let args = env::args();
let cmd = shell_words::join(args);
let mut nix_path = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
nix_path.push("../shell.nix");
let status = Command::new("nix-shell").args(&["--pure", "--run", &cmd, "--"]).arg(nix_path).status().unwrap();
let status = Command::new("nix-shell")
.args(&["--pure", "--run", &cmd, "--", "shell.nix"])
.env("CARGO_TARGET_DIR", "target_nix")
.status()
.unwrap();
process::exit(status.code().unwrap_or(1));
}