about summary refs log tree commit diff
path: root/pkgs/profpatsch/deploy.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/profpatsch/deploy.nix')
-rw-r--r--pkgs/profpatsch/deploy.nix36
1 files changed, 36 insertions, 0 deletions
diff --git a/pkgs/profpatsch/deploy.nix b/pkgs/profpatsch/deploy.nix
new file mode 100644
index 00000000..c85ef45e
--- /dev/null
+++ b/pkgs/profpatsch/deploy.nix
@@ -0,0 +1,36 @@
+# The only deployment tool that anybody should take seriously
+{ pkgs, getBins }:
+
+let
+  bins = getBins pkgs.coreutils [ "realpath" ]
+      // getBins pkgs.openssh [ "ssh" ]
+      // getBins pkgs.nix [ "nix-build" "nix-copy-closure" ]
+      ;
+
+  deploy = pkgs.writers.writeDash "deploy-machine-profpatsch" ''
+    set -e
+    MACHINE="''${1?please set machine as first argument}"
+    OUT_LINK="system-$MACHINE"
+
+    ${bins.nix-build} \
+      --show-trace \
+      --out-link "$OUT_LINK" \
+      -I "nixpkgs=$HOME/nixpkgs" \
+      -A "machines.profpatsch.$MACHINE.build" \
+      "$HOME/vuizvui"
+
+    ${bins.nix-copy-closure} \
+      --to "ssh://$MACHINE?compress=true" \
+      "$OUT_LINK"
+
+    ${bins.ssh} \
+      "root@$MACHINE" \
+      "$(${bins.realpath} $OUT_LINK)/bin/switch-to-configuration" \
+      "switch"
+  '';
+
+in {
+  inherit
+    deploy
+    ;
+}