diff --git a/morph.go b/morph.go index a88414b..e5894df 100644 --- a/morph.go +++ b/morph.go @@ -542,6 +542,7 @@ func getNixContext() *nix.NixContext { return &nix.NixContext{ EvalMachines: filepath.Join(assetRoot, assets.Friendly, "eval-machines.nix"), ShowTrace: showTrace, + DryRun: *dryRun, KeepGCRoot: *keepGCRoot, AllowBuildShell: *allowBuildShell, } @@ -574,8 +575,10 @@ func buildHosts(hosts []nix.Host) (resultPath string, err error) { return } - fmt.Fprintln(os.Stderr, "nix result path: ") - fmt.Println(resultPath) + if resultPath != "" { + fmt.Fprintln(os.Stderr, "nix result path: ") + fmt.Println(resultPath) + } return } diff --git a/nix/nix.go b/nix/nix.go index 6a9cfd5..0f7884b 100644 --- a/nix/nix.go +++ b/nix/nix.go @@ -49,6 +49,7 @@ type Deployment struct { type NixContext struct { EvalMachines string ShowTrace bool + DryRun bool KeepGCRoot bool AllowBuildShell bool } @@ -269,6 +270,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg args = append(args, "--show-trace") } + if ctx.DryRun { + args = append(args, "--dry-run") + } + if nixBuildTargets != "" { args = append(args, "--arg", "buildTargets", nixBuildTargets) @@ -308,6 +313,10 @@ func (ctx *NixContext) BuildMachines(deploymentPath string, hosts []Host, nixArg return resultPath, errors.New(errorMessage) } + if ctx.DryRun { + return "", err + } + resultPath, err = os.Readlink(resultLinkPath) if err != nil { return "", err