diff --git a/src/config.rs b/src/config.rs index 9eec74c7..4e69b0b9 100644 --- a/src/config.rs +++ b/src/config.rs @@ -94,6 +94,7 @@ pub enum Step { GithubCliExtensions, GitRepos, Go, + Guix, Haxelib, GnomeShellExtensions, HomeManager, diff --git a/src/main.rs b/src/main.rs index 88d0f605..e47b1770 100644 --- a/src/main.rs +++ b/src/main.rs @@ -191,6 +191,8 @@ fn run() -> Result<()> { { runner.execute(Step::Yadm, "yadm", || unix::run_yadm(&ctx))?; runner.execute(Step::Nix, "nix", || unix::run_nix(&ctx))?; + runner.execute(Step::Guix, "guix", || unix::run_guix(&ctx))?; + runner.execute(Step::HomeManager, "home-manager", || unix::run_home_manager(run_type))?; runner.execute(Step::Asdf, "asdf", || unix::run_asdf(run_type))?; runner.execute(Step::Pkgin, "pkgin", || unix::run_pkgin(&ctx))?; diff --git a/src/steps/os/unix.rs b/src/steps/os/unix.rs index dd90b2d0..a6c1468a 100644 --- a/src/steps/os/unix.rs +++ b/src/steps/os/unix.rs @@ -251,6 +251,24 @@ pub fn run_brew_cask(ctx: &ExecutionContext, variant: BrewVariant) -> Result<()> Ok(()) } +pub fn run_guix(ctx: &ExecutionContext) -> Result<()> { + let guix = require("guix")?; + + let run_type = ctx.run_type(); + + let output = Command::new(&guix).arg("pull").check_output(); + debug!("guix pull output: {:?}", output); + let should_upgrade = output.is_ok(); + debug!("Can Upgrade Guix: {:?}", should_upgrade); + + print_separator("Guix"); + + if should_upgrade { + return run_type.execute(&guix).args(&["package", "-u"]).check_run(); + } + Err(SkipStep(String::from("Guix Pull Failed, Skipping")).into()) +} + pub fn run_nix(ctx: &ExecutionContext) -> Result<()> { let nix = require("nix")?; let nix_channel = require("nix-channel")?;