diff --git a/nix/dev-shell.nix b/nix/dev-shell.nix index 1b2120139..4275f0e56 100644 --- a/nix/dev-shell.nix +++ b/nix/dev-shell.nix @@ -1,153 +1,151 @@ { mkShell , stdenv , lib , amqp-cpp , awscli2 , arcanist , aws-sdk-cpp , better-prompt , boost , bundler , c-ares_cmake-config , cmake , cmake-format , cocoapods , corrosion , darwin , double-conversion , folly , fmt , glog , grpc , gtest , libiconv , libuv , localstack , mariadb , mariadb-up , nodejs-16_x-openssl_1_1 , olm , openjdk11 , openssl , pkg-config , protobuf_3_15_cmake , python3 , rabbitmq-server , redis , redis-up , rustup , shellcheck , sqlite , terraform , rustfmt , yarn }: mkShell { # programs which are meant to be executed should go here nativeBuildInputs = [ # generic development or tools arcanist awscli2 shellcheck terraform # android openjdk11 # node development mariadb nodejs-16_x-openssl_1_1 yarn python3 redis # native dependencies # C/CXX toolchains are already brought in with mkShell # Identity Service rustfmt rustup # Tunnelbroker + CMake amqp-cpp c-ares_cmake-config cmake cmake-format # linting libuv - # Localstack is currently broken by partial update - # See https://github.com/NixOS/nixpkgs/pull/197572 - #localstack + localstack pkg-config protobuf_3_15_cmake grpc rabbitmq-server # runtime service ] ++ lib.optionals stdenv.isDarwin [ cocoapods # needed for ios bundler ]; # include any libraries buildInputs buildInputs = [ # protobuf exposes both a library and a command # thus should appear in both inputs protobuf_3_15_cmake aws-sdk-cpp # tunnelbroker corrosion # tunnelbroker double-conversion # tunnelbroker glog # tunnelbroker gtest # testing services folly # cpp tools fmt # needed for folly boost # needed for folly olm # needed for CryptoTools sqlite # needed for sqlite_orm openssl # needed for grpc ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ CoreFoundation CoreServices Security libiconv # identity service ]); JAVA_HOME = openjdk11.passthru.home; # shell commands to be ran upon entering shell shellHook = '' PRJ_ROOT=$(git rev-parse --show-toplevel) # Set development environment variable defaults source "${../scripts/source_development_defaults.sh}" # Cache development path for some use cases such as XCode "$PRJ_ROOT/scripts/save_path.sh" '' # Darwin condition can be removed once linux services are supported + lib.optionalString stdenv.isDarwin '' # Start MariaDB development services "${mariadb-up}"/bin/mariadb-up & mariadb_pid=$! "${redis-up}"/bin/redis-up & redis_pid=$! wait "$mariadb_pid" "$redis_pid" ${../scripts}/install_homebrew_macos.sh ${../scripts}/install_homebrew_deps.sh watchman '' + '' # Render default configuration for keyserver $PRJ_ROOT/scripts/create_url_facts.sh # Ensure rustup tooling is installed $PRJ_ROOT/scripts/ensure_rustup_setup.sh # Provide decent bash prompt source "${better-prompt}/bin/better-prompt" echo "Welcome to Comm dev environment! :)" ''; } diff --git a/scripts/source_development_defaults.sh b/scripts/source_development_defaults.sh index 30406a173..5f173364f 100644 --- a/scripts/source_development_defaults.sh +++ b/scripts/source_development_defaults.sh @@ -1,52 +1,55 @@ #!/usr/bin/env bash if [[ "$OSTYPE" == 'linux'* ]]; then export MYSQL_UNIX_PORT="${XDG_RUNTIME_DIR:-/run/user/$UID}/mysql.sock" export ANDROID_HOME="${ANDROID_HOME:-$HOME/Android/Sdk}" fi if [[ "$OSTYPE" == 'darwin'* ]]; then MARIADB_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/MariaDB" export MYSQL_UNIX_PORT="$MARIADB_DIR"/mysql.sock export ANDROID_HOME="${ANDROID_HOME:-$HOME/Library/Android/sdk}" fi # User defaults of # https://www.rabbitmq.com/configure.html#supported-environment-variables export RABBITMQ_NODENAME=comm export RABBITMQ_DEFAULT_PASS=comm export RABBITMQ_DEFAULT_USER=comm export RABBITMQ_HOME=${XDG_DATA_HOME:-$HOME/.local/share}/RabbitMQ export RABBITMQ_MNESIA_BASE=${RABBITMQ_HOME}/mnesia export RABBITMQ_LOG_BASE=${RABBITMQ_HOME}/logs export RABBITMQ_LOGS=${RABBITMQ_LOG_BASE}/comm.log export RABBITMQ_PLUGINS_EXPAND_DIR=${RABBITMQ_HOME}/plugins_expand export RABBITMQ_PID_FILE=${RABBITMQ_HOME}/rabbitmq.pid export PATH="$PATH":"$ANDROID_HOME"/emulator:"$ANDROID_HOME"/tools export PATH="$PATH":"$ANDROID_HOME"/tools/bin:"$ANDROID_HOME"/platform-tools # ANDROID_SDK_ROOT is deprecated, but it's still used by some tooling # such as sdkmanager. ANDROID_HOME is the new prefered env var. export ANDROID_SDK_ROOT="${ANDROID_SDK_ROOT:-$ANDROID_HOME}" export PATH="$PATH":./node_modules/.bin # Development helpers PRJ_ROOT="$(git rev-parse --show-toplevel)" export PATH="$PATH":${PRJ_ROOT}/scripts/bin # mysql2 package wants stable prefixes for temporary directory paths # 'nix develop' will set TMP and related variables to something different each # invocation export TMP=/tmp/app.comm export TEMP="$TMP" export TMPDIR="$TMP" export TEMPDIR="$TMP" mkdir -p "$TMP" # For cargo + rustup applications, ensure cargo user bin directory is on path if [[ ! "$PATH" =~ \.cargo/bin ]]; then export PATH="$PATH":${HOME}/.cargo/bin fi + +# For development and local testing, point to localstack +export AWS_ENDPOINT=http://localhost:4566