about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xthird_party/nix/scripts/build.sh24
-rwxr-xr-xthird_party/nix/scripts/daemon.sh24
-rwxr-xr-xthird_party/nix/scripts/eval.sh23
-rwxr-xr-xthird_party/nix/scripts/repl.sh23
-rwxr-xr-xthird_party/nix/scripts/setup_store.sh11
5 files changed, 105 insertions, 0 deletions
diff --git a/third_party/nix/scripts/build.sh b/third_party/nix/scripts/build.sh
new file mode 100755
index 000000000000..759c9e9f2c12
--- /dev/null
+++ b/third_party/nix/scripts/build.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+# Run `nix build` using a local store, for use during development. Intended to
+# be run from the cmake build directory
+
+set -eo pipefail
+
+if [ $1 = "--debug" ]; then
+    run=(gdb --args)
+    shift 1
+elif [ "$1" = "--rr" ]; then
+    run=(rr record)
+    shift 1
+else
+    run=()
+fi
+
+make -j 10
+NIX_STORE_DIR=$(pwd)/nix/store \
+    NIX_LOG_DIR=$(pwd)/nix/var/log/nix \
+    NIX_STATE_DIR=$(pwd)/nix/var/nix \
+    XDG_CACHE_HOME=$(pwd)/cache \
+    NIX_REMOTE=daemon \
+    ${run[*]} ./src/nix build "$@"
diff --git a/third_party/nix/scripts/daemon.sh b/third_party/nix/scripts/daemon.sh
new file mode 100755
index 000000000000..3daa0f139097
--- /dev/null
+++ b/third_party/nix/scripts/daemon.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+set -eo pipefail
+
+# Run a nix daemon using a local store, for use during development. Intended to
+# be run from the cmake build directory
+
+if [ $1 = "--debug" ]; then
+    run=(gdb --args)
+    shift 1
+elif [ "$1" = "--rr" ]; then
+    run=(rr record)
+    shift 1
+else
+    run=()
+fi
+
+make -j 10
+NIX_STORE_DIR=$(pwd)/nix/store \
+    NIX_LOG_DIR=$(pwd)/nix/var/log/nix \
+    NIX_STATE_DIR=$(pwd)/nix/var/nix \
+    XDG_CACHE_HOME=$(pwd)/cache \
+    NIX_LIBEXEC_DIR=$(pwd) \
+    GRPC_TRACE=all \
+    ${gdb[*]} ./src/nix-daemon/nix-daemon
diff --git a/third_party/nix/scripts/eval.sh b/third_party/nix/scripts/eval.sh
new file mode 100755
index 000000000000..f71d9f7931fe
--- /dev/null
+++ b/third_party/nix/scripts/eval.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+set -eo pipefail
+
+# Run `nix eval` using a local store, for use during development. Intended to
+# be run from the cmake build directory
+
+if [ "$#" -gt 0 ] && [ "$1" = "--debug" ]; then
+    gdb=(gdb --args)
+    shift 1
+elif [ "$1" = "--rr" ]; then
+    gdb=(rr record)
+    shift 1
+else
+    gdb=()
+fi
+
+make -j 10
+NIX_STORE_DIR=$(pwd)/nix/store \
+    NIX_LOG_DIR=$(pwd)/nix/var/log/nix \
+    NIX_STATE_DIR=$(pwd)/nix/var/nix \
+    XDG_CACHE_HOME=$(pwd)/cache \
+    NIX_REMOTE=daemon \
+    ${gdb[*]} ./src/nix eval "$@"
diff --git a/third_party/nix/scripts/repl.sh b/third_party/nix/scripts/repl.sh
new file mode 100755
index 000000000000..d068e807903a
--- /dev/null
+++ b/third_party/nix/scripts/repl.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+set -eo pipefail
+
+# Run `nix repl` using a local store, for use during development. Intended to
+# be run from the cmake build directory
+
+if [ "$#" -gt 0 ] && [ "$1" = "--debug" ]; then
+    gdb=(gdb --args)
+    shift 1
+elif [ "$1" = "--rr" ]; then
+    gdb=(rr record)
+    shift 1
+else
+    gdb=()
+fi
+
+make -j 10
+NIX_STORE_DIR=$(pwd)/nix/store \
+    NIX_LOG_DIR=$(pwd)/nix/var/log/nix \
+    NIX_STATE_DIR=$(pwd)/nix/var/nix \
+    XDG_CACHE_HOME=$(pwd)/cache \
+    NIX_REMOTE=daemon \
+    ${gdb[*]} ./src/nix repl "$@"
diff --git a/third_party/nix/scripts/setup_store.sh b/third_party/nix/scripts/setup_store.sh
new file mode 100755
index 000000000000..ee96c8d3b853
--- /dev/null
+++ b/third_party/nix/scripts/setup_store.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+# Setup a store for local development rooted at the current directory, and
+# compatible with the scripts in this directory (repl.sh, build.sh, eval.sh,
+# daemon.sh, etc). Intended to be run from the cmake build directory
+
+mkdir -p nix/store nix/var/nix nix/var/log/nix
+ln -s $(pwd)/src/nix ./nix/build-remote
+mkdir -p $(dirname "$(pwd)${SANDBOX_SHELL}")
+cp "${SANDBOX_SHELL}" "$(pwd)${SANDBOX_SHELL}"