diff --git a/src/cli.rs b/src/cli.rs index 9140d6d0..004e3989 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -100,6 +100,9 @@ pub struct Opts { /// Which sudo command to use. Must accept at least two arguments: user name to execute commands as and the rest is the command to execute #[clap(long)] sudo: Option, + /// Call nom (nix-output-monitor) when building the configuration. + #[clap(long)] + nom: bool, } /// Returns if the available Nix installation supports flakes @@ -418,6 +421,7 @@ async fn run_deploy( boot: bool, log_dir: &Option, rollback_succeeded: bool, + use_nom: bool, ) -> Result<(), RunDeployError> { let to_deploy: ToDeploy = deploy_flakes .iter() @@ -557,6 +561,7 @@ async fn run_deploy( keep_result, result_path, extra_build_args, + use_nom, }, ) }; @@ -690,6 +695,7 @@ pub async fn run(args: Option<&ArgMatches>) -> Result<(), RunError> { opts.boot, &opts.log_dir, opts.rollback_succeeded.unwrap_or(true), + opts.nom, ) .await?; diff --git a/src/push.rs b/src/push.rs index c800a980..2d344368 100644 --- a/src/push.rs +++ b/src/push.rs @@ -57,6 +57,7 @@ pub struct PushProfileData<'a> { pub keep_result: bool, pub result_path: Option<&'a str>, pub extra_build_args: &'a [String], + pub use_nom: bool, } pub async fn build_profile_locally(data: &PushProfileData<'_>, derivation_name: &str) -> Result<(), PushProfileError> { @@ -66,9 +67,9 @@ pub async fn build_profile_locally(data: &PushProfileData<'_>, derivation_name: ); let mut build_command = if data.supports_flakes { - Command::new("nix") + Command::new(if data.use_nom {"nom"} else {"nix"}) } else { - Command::new("nix-build") + Command::new(if data.use_nom {"nom-build"} else {"nix-build"}) }; if data.supports_flakes { @@ -184,7 +185,7 @@ pub async fn build_profile_remotely(data: &PushProfileData<'_>, derivation_name: a => return Err(PushProfileError::CopyExit(a)), }; - let mut build_command = Command::new("nix"); + let mut build_command = Command::new(if data.use_nom {"nom"} else {"nix"}); build_command .arg("build").arg(derivation_name) .arg("--eval-store").arg("auto")