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