about summary refs log tree commit diff
path: root/users/wpcarro
diff options
context:
space:
mode:
Diffstat (limited to 'users/wpcarro')
-rw-r--r--users/wpcarro/.envrc3
-rwxr-xr-xusers/wpcarro/bin/__dispatch.sh24
l---------users/wpcarro/bin/deploy-diogenes1
-rw-r--r--users/wpcarro/nixos/default.nix16
4 files changed, 42 insertions, 2 deletions
diff --git a/users/wpcarro/.envrc b/users/wpcarro/.envrc
index 196758a932f0..b23a41fbd7a4 100644
--- a/users/wpcarro/.envrc
+++ b/users/wpcarro/.envrc
@@ -1,2 +1,3 @@
 source_up
-export WPCARRO="$REPO_ROOT/users/wpcarro"
+export PATH="${PWD}/bin:${PATH}"
+export WPCARRO="${REPO_ROOT}/users/wpcarro"
diff --git a/users/wpcarro/bin/__dispatch.sh b/users/wpcarro/bin/__dispatch.sh
new file mode 100755
index 000000000000..b7671562eb2d
--- /dev/null
+++ b/users/wpcarro/bin/__dispatch.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+# This script dispatches invocations transparently to programs instantiated from
+# Nix.
+#
+# To add a new tool, insert it into the case statement below by setting `attr`
+# to the key in nixpkgs which represents the program you want to run.
+set -ueo pipefail
+
+TARGET_TOOL=$(basename "$0")
+
+case "${TARGET_TOOL}" in
+  deploy-diogenes)
+    attr="users.wpcarro.nixos.deploy-diogenes"
+    ;;
+  *)
+    echo "The tool '${TARGET_TOOL}' is currently not installed in this repository."
+    exit 1
+    ;;
+esac
+
+result=$(nix-build --no-out-link --attr "${attr}" "${REPO_ROOT}")
+PATH="${result}/bin:$PATH"
+
+exec "${TARGET_TOOL}" "${@}"
diff --git a/users/wpcarro/bin/deploy-diogenes b/users/wpcarro/bin/deploy-diogenes
new file mode 120000
index 000000000000..8390ec9c9652
--- /dev/null
+++ b/users/wpcarro/bin/deploy-diogenes
@@ -0,0 +1 @@
+__dispatch.sh
\ No newline at end of file
diff --git a/users/wpcarro/nixos/default.nix b/users/wpcarro/nixos/default.nix
index b1a878c95a07..e7ae5490b9b6 100644
--- a/users/wpcarro/nixos/default.nix
+++ b/users/wpcarro/nixos/default.nix
@@ -1,8 +1,22 @@
-{ depot, ... }:
+{ depot, pkgs, ... }:
 
 let systemFor = sys: (depot.ops.nixos.nixosFor sys).system;
 in {
   marcusSystem = systemFor depot.users.wpcarro.nixos.marcus;
+  deploy-diogenes = pkgs.writeShellScriptBin "deploy-diogenes" ''
+    set -euo pipefail
+    readonly TF_STATE_DIR=/depot/users/wpcarro/terraform
+    rm -f $TF_STATE_DIR/*.json
+    readonly STORE_PATH="$(nix-build /depot -A users.wpcarro.nixos.diogenes)"
+    cp $STORE_PATH $TF_STATE_DIR
+
+    function cleanup() {
+      rm -f "$TF_STATE_DIR/$(basename $STORE_PATH)"
+    }
+
+    trap cleanup EXIT
+    ${pkgs.terraform}/bin/terraform -chdir="$TF_STATE_DIR" apply
+  '';
 
   meta.targets = [ "marcusSystem" ];
 }