]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - overlays/morph/dry-run.patch
Add dry-run patch for morph
[perso/Immae/Config/Nix.git] / overlays / morph / dry-run.patch
diff --git a/overlays/morph/dry-run.patch b/overlays/morph/dry-run.patch
new file mode 100644 (file)
index 0000000..2ff099e
--- /dev/null
@@ -0,0 +1,59 @@
+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