dbca46d052
This module makes it fairly easy to deploy NixOS system closures using Terraform, while properly separating the evaluation of a derivation (to determine whether a deploy is needed) from the building and copying of the closure itself. This has been on my stack for a while. It was originally developed for Resoptima, who agreed to open-sourcing it in depot back when we completed our work with them. Their contribution has been acknowledged in the README. Co-Authored-By: Florian Klink <flokli@flokli.de> Change-Id: Ica4c170658cd25f1fb7072c9a45735fcc4351474 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7950 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
16 lines
498 B
Bash
Executable file
16 lines
498 B
Bash
Executable file
#!/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)"')"
|
|
|
|
# Evaluate the system derivation.
|
|
# TODO: configurable REPO_ROOT
|
|
REPO_ROOT=$(git rev-parse --show-toplevel)
|
|
SYSTEM_DRV=$(nix-instantiate -A "${ATTRPATH}" "${REPO_ROOT}")
|
|
|
|
# Return system derivation back to Terraform.
|
|
jq -n --arg drv "$SYSTEM_DRV" '{"drv":$drv}'
|