about summary refs log tree commit diff
path: root/ops/terraform/deploy-nixos/nixos-eval.sh
diff options
context:
space:
mode:
Diffstat (limited to 'ops/terraform/deploy-nixos/nixos-eval.sh')
-rwxr-xr-xops/terraform/deploy-nixos/nixos-eval.sh15
1 files changed, 15 insertions, 0 deletions
diff --git a/ops/terraform/deploy-nixos/nixos-eval.sh b/ops/terraform/deploy-nixos/nixos-eval.sh
new file mode 100755
index 000000000000..38f036bba936
--- /dev/null
+++ b/ops/terraform/deploy-nixos/nixos-eval.sh
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+#
+# Builds a NixOS system configuration at the given attribute path.
+set -ueo pipefail
+
+# Load input variables from Terraform. jq's @sh format takes care of
+# escaping.
+eval "$(jq -r '@sh "ATTRPATH=\(.attrpath) && ENTRYPOINT=\(.entrypoint)"')"
+
+# Evaluate the system derivation.
+[[ -z "$ENTRYPOINT" ]] && ENTRYPOINT=$(git rev-parse --show-toplevel)
+SYSTEM_DRV=$(nix-instantiate -A "${ATTRPATH}" "${ENTRYPOINT}")
+
+# Return system derivation back to Terraform.
+jq -n --arg drv "$SYSTEM_DRV" '{"drv":$drv}'