Merge "clustercfg: show diff before switching to new configuration"
diff --git a/cluster/clustercfg/clustercfg.py b/cluster/clustercfg/clustercfg.py
index 1396826..410635b 100644
--- a/cluster/clustercfg/clustercfg.py
+++ b/cluster/clustercfg/clustercfg.py
@@ -205,8 +205,7 @@
     subprocess.check_call(["nix", "run",
                            "-f", os.path.join(local_root, "cluster/nix/default.nix"),
                            "provision",
-                           "-c", "provision-{}".format(fqdn.split('.')[0]),
-                           "switch"])
+                           "-c", "provision-{}".format(fqdn.split('.')[0])])
 
 
 def usage():
diff --git a/cluster/nix/provision.nix b/cluster/nix/provision.nix
index 70240f6..20ed0a0 100644
--- a/cluster/nix/provision.nix
+++ b/cluster/nix/provision.nix
@@ -20,7 +20,16 @@
    remote=root@${machine.fqdn}
    echo "Configuration for ${machine.fqdn} is ${configuration.toplevel}"
    nix copy --no-check-sigs -s --to ssh://$remote ${configuration.toplevel}
-   ssh $remote ${configuration.toplevel}/bin/switch-to-configuration $1
+   echo "/etc/systemd/system diff:"
+   ssh $remote diff -ur /var/run/current-system/etc/systemd/system ${configuration.toplevel}/etc/systemd/system || true
+   echo ""
+   echo ""
+   ssh $remote ${configuration.toplevel}/bin/switch-to-configuration dry-activate
+   read -p "Do you want to switch to this configuration? " -n 1 -r
+   echo
+   if [[ $REPLY =~ ^[Yy]$ ]]; then
+       ssh $remote ${configuration.toplevel}/bin/switch-to-configuration switch
+   fi
   '';
 
   machineProvisioners = builtins.listToAttrs (map (machine: {