diff options
Diffstat (limited to 'bin/__dispatch.sh')
-rwxr-xr-x | bin/__dispatch.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/bin/__dispatch.sh b/bin/__dispatch.sh new file mode 100755 index 000000000000..a4fa75358def --- /dev/null +++ b/bin/__dispatch.sh @@ -0,0 +1,64 @@ +#!/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 + +readonly REPO_ROOT=$(dirname "$0")/.. +TARGET_TOOL=$(basename "$0") + +case "${TARGET_TOOL}" in + age) + attr="third_party.age" + ;; + age-keygen) + attr="third_party.age" + ;; + depot-build) + attr="tools.depot-build" + ;; + gerrit) + attr="tools.gerrit-cli" + ;; + gerrit-update) + attr="tools.gerrit-update" + ;; + hash-password) + attr="tools.hash-password" + ;; + kontemplate) + attr="kontemplate" + ;; + meson) + attr="third_party.meson" + ;; + ninja) + attr="third_party.ninja" + ;; + perf-flamegraph) + attr="tools.perf-flamegraph" + ;; + rebuild-system) + attr="ops.nixos.rebuild-system" + ;; + rebuilder) + attr="users.tazjin.nixos.rebuilder" + ;; + rink) + attr="third_party.rink" + ;; + stern) + attr="third_party.stern" + ;; + *) + 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}" "${@}" |