tools/run_bazel: allow running bazel inside nix-shell without entering

nix-shell does not support arguments for an application running inside
a FHS environment. This adds a workaround by keeping the command inside
an environment variable and executing it if set. If it doesnt exist, we
fall back to our bash shell.

Change-Id: I7fd53f9c14019179490af4b9af3b0b16b3d70297
Reviewed-on: https://review.monogon.dev/c/monogon/+/2066
Tested-by: Jenkins CI
Reviewed-by: Leopold Schabel <leo@monogon.tech>
diff --git a/.gitignore b/.gitignore
index bee0a77..1928294 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
 .bazelrc.user
 .bazelrc.sandbox
 .bazeldnf
+.direnv
\ No newline at end of file
diff --git a/shell.nix b/shell.nix
index 69e6ac4..2ae043c 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,3 +1,4 @@
+{ command ? "bash --noprofile --norc" }:
 # If you're on NixOS, use me! `nix-shell --pure`.
 with import (fetchTarball {
   # nixpkgs 23.05 as of 2023/07/19
@@ -27,7 +28,12 @@
     # stripped by (host_)action_env.
     export BAZEL_SH=/bin/bash
 
-    exec bash --noprofile --norc "$@"
+    # Allow passing a custom command via env since nix-shell doesn't support
+    # this yet: https://github.com/NixOS/nix/issues/534
+    if [ ! -n "$COMMAND" ]; then
+        COMMAND="bash --noprofile --norc"
+    fi
+    exec $COMMAND
   '';
 in
 (pkgs.buildFHSUserEnv {
diff --git a/tools/run_bazel b/tools/run_bazel
new file mode 100755
index 0000000..c2a9adc
--- /dev/null
+++ b/tools/run_bazel
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+export COMMAND="bazel $*"
+nix-shell