feat(tvix): Add scripts for local nix daemon testing

These are the scripts I use to test the nix daemon interaction with a
non-/nix store directory during development, copied almost verbatim from
my cmake build directory. As such, there's likely a *lot* of cleanup and
deduplication to be done here, but I'm committing these as is in the
hope that others can benefit from them somehow.

Change-Id: I42a10a85e6731fa2014c7ea9738224d678a8376b
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1881
Reviewed-by: kanepyork <rikingcoding@gmail.com>
Tested-by: BuildkiteCI
This commit is contained in:
Griffin Smith 2020-08-28 21:42:50 -04:00 committed by glittershark
parent 96ea76bd59
commit 059d90dd6d
5 changed files with 105 additions and 0 deletions

24
third_party/nix/scripts/build.sh vendored Executable file
View file

@ -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 "$@"

24
third_party/nix/scripts/daemon.sh vendored Executable file
View file

@ -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

23
third_party/nix/scripts/eval.sh vendored Executable file
View file

@ -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 "$@"

23
third_party/nix/scripts/repl.sh vendored Executable file
View file

@ -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 "$@"

11
third_party/nix/scripts/setup_store.sh vendored Executable file
View file

@ -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}"