diff --git a/ci/Jenkinsfile.android b/ci/Jenkinsfile.android index 313f0d53397..37aa0261236 100644 --- a/ci/Jenkinsfile.android +++ b/ci/Jenkinsfile.android @@ -1,7 +1,7 @@ -library 'status-jenkins-lib@v1.3.3' +library 'status-jenkins-lib@fix/nix-profile' pipeline { - agent { label 'linux && x86_64 && nix-2.3' } + agent { label 'linux && x86_64 && nix-2.6' } options { timestamps() diff --git a/ci/Jenkinsfile.combined b/ci/Jenkinsfile.combined index 76324e679e8..d691bddbf7b 100644 --- a/ci/Jenkinsfile.combined +++ b/ci/Jenkinsfile.combined @@ -1,4 +1,4 @@ -library 'status-jenkins-lib@v1.3.3' +library 'status-jenkins-lib@fix/nix-profile' pipeline { agent { label 'linux' } diff --git a/ci/Jenkinsfile.ios b/ci/Jenkinsfile.ios index fbc669c3112..cf1db749ab1 100644 --- a/ci/Jenkinsfile.ios +++ b/ci/Jenkinsfile.ios @@ -1,7 +1,7 @@ -library 'status-jenkins-lib@v1.3.3' +library 'status-jenkins-lib@fix/nix-profile' pipeline { - agent { label 'macos && x86_64 && nix-2.3 && xcode-12.5' } + agent { label 'macos && x86_64 && nix-2.6 && xcode-12.5' } parameters { string( diff --git a/ci/Jenkinsfile.nix-cache b/ci/Jenkinsfile.nix-cache index 8f90de3241d..c9ac2f114d2 100644 --- a/ci/Jenkinsfile.nix-cache +++ b/ci/Jenkinsfile.nix-cache @@ -1,4 +1,4 @@ -library 'status-jenkins-lib@v1.3.3' +library 'status-jenkins-lib@fix/nix-profile' pipeline { agent { label params.AGENT_LABEL } diff --git a/ci/tools/Jenkinsfile.fastlane-clean b/ci/tools/Jenkinsfile.fastlane-clean index 968a4c59332..f4714a17408 100644 --- a/ci/tools/Jenkinsfile.fastlane-clean +++ b/ci/tools/Jenkinsfile.fastlane-clean @@ -1,4 +1,4 @@ -library 'status-jenkins-lib@v1.3.3' +library 'status-jenkins-lib@fix/nix-profile' pipeline { agent { label 'macos' } diff --git a/ci/tools/Jenkinsfile.playstore-meta b/ci/tools/Jenkinsfile.playstore-meta index 13e8f11cc9c..5b5519e160f 100644 --- a/ci/tools/Jenkinsfile.playstore-meta +++ b/ci/tools/Jenkinsfile.playstore-meta @@ -1,4 +1,4 @@ -library 'status-jenkins-lib@v1.3.3' +library 'status-jenkins-lib@fix/nix-profile' pipeline { agent { label 'linux' } diff --git a/nix/KNOWN_ISSUES.md b/nix/KNOWN_ISSUES.md index 87867265692..73d48226403 100644 --- a/nix/KNOWN_ISSUES.md +++ b/nix/KNOWN_ISSUES.md @@ -1,35 +1,33 @@ # Known Issues -## MacOS 10.15 "Catalina" +## Too many open files -There is an unsolved issue with the root(`/`) file system in `10.15` being read-only: -https://github.com/NixOS/nix/issues/2925 +### Single-User Installation -Our current recommended workaround is putting `/nix` under `/opt/nix` and symlinking it via `/etc/synthetic.conf`: - -```bash -sudo mkdir /opt/nix -sudo chown ${USER} /opt/nix -sudo sh -c "echo 'nix\t/opt/nix' >> /etc/synthetic.conf" -reboot +Nix can open a lot of files when fetching things for `/nix/store` which can cause ``` - -After the system reboots you should see the `/nix` symlink in place: - -```bash - % ls -l /nix -lrwxr-xr-x 1 root wheel 8 Oct 11 13:53 /nix -> /opt/nix +Too many open files" ``` - -In order to be able to use Nix with a symlinked `/nix` you need to include this in your shell: - -```bash -export NIX_IGNORE_SYMLINK_STORE=1 +The temporary way to fix this is set a new limit for current session using `ulimit`: +```sh +ulimit -n 131072 +``` +To increase limit permanently system-wide edit `/etc/sysctl.conf`: +``` +fs.file-max = 131072 ``` +And use `sudo sysctl --system` to load these new settings. -Add it to your `.bashrc` or any other shell config file. +### Multi-User Installation -__NOTE__: Your old `/nix` directory will end up in `/Users/Shared/Relocated Items/Security/nix` after OS upgrade. +The other reason why this error could appear are limits fo `nix-daemon` service: +https://github.com/NixOS/nix/issues/6007 + +Since Systemd services ignore system-wide limits you will have to add the following line: +``` +LimitNOFILE=4096:1048576 +``` +To the `/etc/systemd/system/nix-daemon.service` service definition. ## Cache Downloads Timing Out @@ -69,3 +67,11 @@ Currently on NixOS `NIX_CONF_DIR` is being ignored in favor of the default `/etc This will be possible to fix once Nix `2.4` comes out with support for `NIX_USER_CONF_FILES`. For more details see https://github.com/NixOS/nix/issues/3723. + +## Extra Sandbox Files Not Available + +It's possible that on a multi-user installation files provided to the build sandbox using the `extra-sandbox-paths` option will ne be available, unless the current user is added to `trusted-users` in `nix.conf` file. + +Issues: +* https://github.com/NixOS/nix/issues/6115 +* https://github.com/NixOS/nix/issues/6217 diff --git a/nix/scripts/build.sh b/nix/scripts/build.sh index a3fe8d7bab0..628a8a55abc 100755 --- a/nix/scripts/build.sh +++ b/nix/scripts/build.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash - +# This script is a wrapper around nix-build with some niceties. set -e GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) @@ -8,7 +8,7 @@ source "${GIT_ROOT}/scripts/colors.sh" source "${GIT_ROOT}/nix/scripts/source.sh" # cleanup for artifacts created during builds -function cleanup() { +cleanup() { # clear trapped signals trap - EXIT ERR INT QUIT # do the actual cleanup, ignore failure @@ -29,7 +29,7 @@ if [[ -n "${_NIX_CLEAN}" ]]; then fi # build output will end up under /nix, we have to extract it -function extractResults() { +extractResults() { local nixResultPath="$1" mkdir -p "${resultPath}" cp -vfr ${nixResultPath}/* "${resultPath}" | sed 's#'${PWD}'#.#' diff --git a/nix/scripts/clean.sh b/nix/scripts/clean.sh index 9a087fcc0d9..da953e47bc1 100755 --- a/nix/scripts/clean.sh +++ b/nix/scripts/clean.sh @@ -5,16 +5,16 @@ set -e GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) source "${GIT_ROOT}/nix/scripts/source.sh" -function log() { echo "$@" 1>&2; } +log() { echo "$@" 1>&2; } # helpers for getting related paths in Nix store -function getSources() { nix-store --query --binding src "${1}"; } -function getOutputs() { nix-store --query --outputs "${1}"; } -function getDrvFiles() { nix-store --query --deriver "${1}"; } -function getReferrers() { nix-store --query --referrers "${1}"; } -function getRoots() { nix-store --query --roots "${1}"; } +getSources() { nix-store --query --binding src "${1}"; } +getOutputs() { nix-store --query --outputs "${1}"; } +getDrvFiles() { nix-store --query --deriver "${1}"; } +getReferrers() { nix-store --query --referrers "${1}"; } +getRoots() { nix-store --query --roots "${1}"; } -function findRelated() { +findRelated() { path="${1}" found+=("${path}") if [[ "${path}" =~ .*.chroot ]]; then @@ -51,7 +51,7 @@ function findRelated() { } # used to find things to delete based on a regex -function findByRegex() { +findByRegex() { regex="${1}" log "Searching by regex: '${regex}'" @@ -70,7 +70,7 @@ function findByRegex() { } # used to find things to delete based on a given path -function findByResult() { +findByResult() { mainPath="${1}" log "Searching by result: '${mainPath}'" diff --git a/nix/scripts/lib.sh b/nix/scripts/lib.sh new file mode 100755 index 00000000000..28c08ff34ad --- /dev/null +++ b/nix/scripts/lib.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash + +# Checking group ownership to identify installation type. +file_group() { + UNAME=$(uname -s) + if [[ "${UNAME}" == "Linux" ]]; then + stat -Lc "%G" "${1}" 2>/dev/null + elif [[ "${UNAME}" == "Darwin" ]]; then + stat -Lf "%Sg" "${1}" 2>/dev/null + fi +} + +os_name() { + source /etc/os-release 2>/dev/null + echo "${NAME}" +} + +is_arch_linux() { + [[ -f /etc/arch-release ]] +} + +nix_install_type() { + NIX_STORE_DIR_GROUP=$(file_group /nix/store) + if [[ "$(os_name)" =~ NixOS ]]; then + echo "nixos" + elif [[ "${NIX_STORE_DIR_GROUP}" == "nixbld" ]]; then + echo "multi" + elif [[ "${NIX_STORE_DIR_GROUP}" == "${USER}" ]]; then + echo "single" + elif [[ "${NIX_STORE_DIR_GROUP}" == "" ]]; then + echo "No Nix installtion detected!" >&2 + echo "none" + else + echo "Unknown Nix installtion type!" >&2 + exit 1 + fi +} diff --git a/nix/scripts/node_modules.sh b/nix/scripts/node_modules.sh index 61ea8d15ef8..7111bde273a 100755 --- a/nix/scripts/node_modules.sh +++ b/nix/scripts/node_modules.sh @@ -23,13 +23,13 @@ source "${GIT_ROOT}/scripts/colors.sh" # More concise output from 'time' export TIMEFORMAT="Done in: %Es" -function removeDir() { +removeDir() { [[ ! -d "${tmp}" ]] && return chmod -R u+w "${tmp}" rm -rf "${tmp}" } -function copyNodeModules() { +copyNodeModules() { local src="${1}" local dst="${2}" # WARNING: The ../ is there to avoid a Nix builtins.path bug: @@ -51,7 +51,7 @@ function copyNodeModules() { # Find files that were modified and should cause a re-copying of node modules. # Some files are generated/modified by build processes and should be ignored. -function findFilesNewerThan() { +findFilesNewerThan() { local sentinel="${1}" local dir="${2}" find ${dir} -type f -writable \ @@ -63,7 +63,7 @@ function findFilesNewerThan() { -print } -function nodeModulesUnchanged() { +nodeModulesUnchanged() { local src="$1" local dst="$2" local sentinelFile="${dst}/.copied~" @@ -98,7 +98,7 @@ function nodeModulesUnchanged() { return 0 } -function replaceNodeModules() { +replaceNodeModules() { local src="$1" local dst="$2" local sentinelFile="${dst}/.copied~" diff --git a/nix/scripts/purge.sh b/nix/scripts/purge.sh index a4f62494d3d..2c82cfd61dd 100755 --- a/nix/scripts/purge.sh +++ b/nix/scripts/purge.sh @@ -1,24 +1,82 @@ #!/usr/bin/env bash - -set -e +# This script removes all Nix files. GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) +source "${GIT_ROOT}/nix/scripts/lib.sh" source "${GIT_ROOT}/scripts/colors.sh" -# Purging /nix on NixOS would be disasterous -if [[ -f "/etc/os-release" ]]; then - OS_NAME=$(awk -F= '/^NAME/{print $2}' /etc/os-release) - if [[ "$OS_NAME" == "NixOS" ]]; then - echo -e "${RED}You should not purge Nix files on NixOS!${RST}" >&2 - exit +nix_purge_multi_user() { + sudo systemctl stop nix-daemon.socket + sudo systemctl stop nix-daemon.service + sudo systemctl disable nix-daemon.socket + sudo systemctl disable nix-daemon.service + sudo systemctl daemon-reload + sudo rm -fr /etc/nix + sudo rm -f /etc/profile.d/nix.sh* + + # Remove nix build users and groups + for NIX_USER in $(awk -F: '/nixbld/{print $1}' /etc/passwd); do + sudo userdel "${NIX_USER}" + done + sudo groupdel nixbld + + # Restore old shell profiles + NIX_PROFILE_FILES=( + /etc/bash.bashrc /etc/bashrc /etc/bash/bashrc + /etc/zsh.zshhrc /etc/zshrc /etc/zsh/zshrc + ) + for NIX_FILE in "${NIX_PROFILE_FILES[@]}"; do + if [[ -f "${NIX_FILE}.backup-before-nix" ]]; then + sudo mv -f "${NIX_FILE}.backup-before-nix" "${NIX_FILE}" + fi + done +} + +nix_purge_user_profile() { + sudo rm -rf \ + ~/.nix-* \ + ~/.cache/nix \ + ~/.config/nixpkgs \ + ${GIT_ROOT}/.nix-gcroots +} + +nix_purge_root() { + NIX_ROOT="/nix" + if [[ $(uname -s) == "Darwin" ]]; then + # Special case due to read-only root on MacOS Catalina + NIX_ROOT="/opt/nix" + fi + if [[ -z "${NIX_ROOT}" ]]; then + echo -e "${RED}Unable to identify Nix root!${RST}" >&2 + exit 1 fi + sudo rm -fr "${NIX_ROOT}" +} + +NIX_INSTALL_TYPE=$(nix_install_type) + +if [[ "${1}" == "--force" ]] && [[ "${NIX_INSTALL_TYPE}" != "nixos" ]]; then + echo -e "${YLW}Purge forced, no checks performed!${RST}" >&2 + nix_purge_multi_user + nix_purge_user_profile + nix_purge_root + exit fi -NIX_ROOT="/nix" -if [[ $(uname -s) == "Darwin" ]]; then - # Special case due to read-only root on MacOS Catalina - NIX_ROOT="/opt/nix" +# Purging /nix on NixOS would be disasterous +if [[ "${NIX_INSTALL_TYPE}" == "nixos" ]]; then + echo -e "${RED}You should not purge Nix files on NixOS!${RST}" >&2 + exit +elif [[ "${NIX_INSTALL_TYPE}" == "none" ]]; then + echo -e "${YLW}Nothing to remove, Nix not installed.${RST}" >&2 + exit +elif [[ "${NIX_INSTALL_TYPE}" == "multi" ]]; then + echo -e "${YLW}Detected multi-user Nix installation.${RST}" >&2 + nix_purge_multi_user +elif [[ "${NIX_INSTALL_TYPE}" == "single" ]]; then + echo -e "${YLW}Detected single-user Nix installation.${RST}" >&2 + nix_purge_user_profile fi +nix_purge_root -sudo rm -rf ${NIX_ROOT}/* ~/.nix-profile ~/.nix-defexpr ~/.nix-channels ~/.cache/nix ~/.status .nix-gcroots echo -e "${GRN}Purged all Nix files from your system.${RST}" >&2 diff --git a/nix/scripts/setup.sh b/nix/scripts/setup.sh index cc747b36f19..e66695cc97e 100755 --- a/nix/scripts/setup.sh +++ b/nix/scripts/setup.sh @@ -1,51 +1,73 @@ #!/usr/bin/env bash +# This script installs a specific version of Nix. +set -eo pipefail GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) +source "${GIT_ROOT}/nix/scripts/lib.sh" source "${GIT_ROOT}/scripts/colors.sh" -NIX_VERSION="2.3.12" +NIX_VERSION="2.6.1" NIX_INSTALL_URL="https://nixos.org/releases/nix/nix-${NIX_VERSION}/install" -NIX_INSTALL_SHA256="468a49a1cef293d59508bb3b62625dfcd99ec00334a14309f125cf8de513d5f1" +NIX_INSTALL_SHA256="a63732b4f3628ce97e096dbda88e3cb9851ff6b4f94b5cd43feb257126437b9d" NIX_INSTALL_PATH="/tmp/nix-install-${NIX_VERSION}" -function install_nix() { - # Don't break people's profiles - export NIX_INSTALLER_NO_MODIFY_PROFILE=1 - # Fix for installing on MacOS Catalina - export NIX_IGNORE_SYMLINK_STORE=1 - # Download installer and verify SHA256 - curl -s "${NIX_INSTALL_URL}" -o "${NIX_INSTALL_PATH}" - echo "${NIX_INSTALL_SHA256} ${NIX_INSTALL_PATH}" | sha256sum -c - chmod +x "${NIX_INSTALL_PATH}" - # Run the installer - "${NIX_INSTALL_PATH}" --no-daemon - if [ $? -eq 0 ]; then - echo -e "${GRN}The Nix package manager was successfully installed.${RST}" - else - echo -e "${RED}Failed to install Nix package manager!${RST}" >&2 - echo "Please see: https://nixos.org/nix/manual/#chap-installation" >&2 - exit 1 - fi +install_nix() { + # Download installer and verify SHA256> + curl -s "${NIX_INSTALL_URL}" -o "${NIX_INSTALL_PATH}" + echo "${NIX_INSTALL_SHA256} ${NIX_INSTALL_PATH}" | sha256sum -c + chmod +x "${NIX_INSTALL_PATH}" + + # Identify installation type. + if [[ -z "${NIX_INSTALL_OPTS}" ]]; then + if [[ "$(uname -r)" =~ microsoft ]]; then + # Systemd is not started by default on WSL. + NIX_INSTALL_OPTS="--no-daemon" + elif [[ "$(uname -s)" == "Darwin" ]]; then + # Single-user not supported on Darwin. + NIX_INSTALL_OPTS="--daemon" + elif [[ "$(uname -s)" == "Linux" ]]; then + # Open file limit issues on Linux. + # https://github.com/NixOS/nix/issues/6007 + # Alson known issues with nix-daemon.socket on Arch. + NIX_INSTALL_OPTS="--no-daemon" + fi + fi + + # Run the installer + "${NIX_INSTALL_PATH}" "${NIX_INSTALL_OPTS}" + if [[ $? -eq 0 ]]; then + echo -e "${GRN}The Nix package manager was successfully installed.${RST}" + else + echo -e "${RED}Failed to install Nix package manager!${RST}" >&2 + echo "Please see: https://nixos.org/nix/manual/#chap-installation" >&2 + exit 1 + fi } +if [[ ! -x "$(command -v sha256sum)" ]]; then + echo -e "${RED}The 'sha256sum' utility is required for Nix installation.${RST}" >&2 + echo -e "${YLW}Install 'coreutils' package on your system.${RST}" >&2 + exit 1 +fi + if [[ ! -x "$(command -v curl)" ]]; then - echo -e "${RED}The 'curl' utility is required for Nix installation.${RST}" >&2 - exit 1 + echo -e "${RED}The 'curl' utility is required for Nix installation.${RST}" >&2 + exit 1 fi if [[ "$(source /etc/os-release 2>/dev/null && echo "${NAME}")" == *NixOS* ]]; then - echo -e "${GRN}Already running NixOS.${RST}" - exit + echo -e "${GRN}Already running NixOS.${RST}" + exit fi if [[ -x "$(command -v nix)" ]]; then - echo -e "${GRN}Nix package manager already installed.${RST}" - exit + echo -e "${GRN}Nix package manager already installed.${RST}" + exit fi if [[ "${IN_NIX_SHELL}" == 'pure' ]]; then - echo -e "${GRN}Already in a pure Nix shell.${RST}" - exit + echo -e "${GRN}Already in a pure Nix shell.${RST}" + exit fi # If none of the checks before succeeded we need to install Nix diff --git a/nix/scripts/source.sh b/nix/scripts/source.sh index dc53b4afa72..a70f9a2c287 100755 --- a/nix/scripts/source.sh +++ b/nix/scripts/source.sh @@ -1,33 +1,41 @@ #!/usr/bin/env bash - # This script makes sure we have Nix tools available +set -e GIT_ROOT=$(cd "${BASH_SOURCE%/*}" && git rev-parse --show-toplevel) +source "${GIT_ROOT}/nix/scripts/lib.sh" +source "${GIT_ROOT}/scripts/colors.sh" + +source_nix_profile() { + NIX_INSTALL_TYPE=$(nix_install_type) + if [[ "${NIX_INSTALL_TYPE}" == "multi" ]]; then + source "/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh" + elif [[ "${NIX_INSTALL_TYPE}" == "single" ]]; then + source "${HOME}/.nix-profile/etc/profile.d/nix.sh" + elif [[ "${NIX_INSTALL_TYPE}" == "nixops" ]]; then + echo "Sourcing profile not necessary on NixOS!" >&2 + fi +} -# Location of profile script for Nix that adjusts PATH -export NIX_PROFILE_SH="${HOME}/.nix-profile/etc/profile.d/nix.sh" +main() { + # Just stop if Nix is already available + if [[ -x $(command -v nix) ]]; then + return + fi -function source_nix() { - # Just stop if Nix is already available - if [[ -x $(command -v nix) ]]; then - return - elif [[ -f "${NIX_PROFILE_SH}" ]]; then - # Load Nix profile if it exists - source "${NIX_PROFILE_SH}" - return - else # Setup Nix if not available - ${GIT_ROOT}/nix/scripts/setup.sh - fi + if [[ ! -d /nix ]]; then + ${GIT_ROOT}/nix/scripts/setup.sh + fi - # Load Nix profile - source "${NIX_PROFILE_SH}" + # Load Nix profile + source_nix_profile - # Verify Nix is available - if [[ ! -x $(command -v nix) ]]; then - echo "Nix not available, sourcing profile failed!" > /dev/stderr - exit 1 - fi + # Verify Nix is available + if [[ ! -x $(command -v nix) ]]; then + echo -e "${RED}Nix not available, sourcing profile failed!${RST}" >&2 + exit 1 + fi } -source_nix +main diff --git a/package.json b/package.json index 091f087c075..213133d13ff 100644 --- a/package.json +++ b/package.json @@ -5,22 +5,22 @@ "scripts": { "start": "react-native start", "ios": "react-native run-ios", + "app:android": "react-native run-android", "app:compile:android": "shadow-cljs compile android", - "app:watch": "shadow-cljs watch android", "app:packager": "react-native start --host 0.0.0.0 --port 8081", - "app:android": "react-native run-android" + "app:watch": "shadow-cljs watch android" }, "dependencies": { "@react-native-community/async-storage": "^1.11.0", - "@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#v2.0.3-status-v6", - "@react-native-community/cameraroll": "git+https://github.com/status-im/react-native-cameraroll.git#v4.0.4-status.0", + "@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#refs/tags/v2.0.3-status-v6", + "@react-native-community/cameraroll": "git+https://github.com/status-im/react-native-cameraroll.git#refs/tags/v4.0.4-status.0", "@react-native-community/clipboard": "^1.2.2", "@react-native-community/hooks": "^2.5.1", "@react-native-community/masked-view": "^0.1.6", "@react-native-community/netinfo": "^4.4.0", "@react-native-community/push-notification-ios": "^1.4.1", "@react-native-community/slider": "^3.0.0", - "bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status", + "bignumber.js": "git+https://github.com/status-im/bignumber.js.git#refs/tags/v4.0.2-status", "buffer": "^5.4.2", "chance": "^1.1.0", "create-react-class": "^15.6.2", @@ -37,7 +37,8 @@ "react-native-background-timer": "^2.1.1", "react-native-blob-util": "^0.13.18", "react-native-camera-kit": "^8.0.4", - "react-native-config": "git+https://github.com/status-im/react-native-config.git#v1.4.2-status", + "react-native-config": "git+https://github.com/status-im/react-native-config.git#refs/tags/v1.4.2-status", + "react-native-dark-mode": "^0.2.2", "react-native-device-info": "^7.4.0", "react-native-dialogs": "^1.0.4", "react-native-draggable-flatlist": "^3.0.3", @@ -46,10 +47,10 @@ "react-native-fs": "^2.14.1", "react-native-gesture-handler": "^1.8.0", "react-native-haptic-feedback": "^1.9.0", - "react-native-image-crop-picker": "git+https://github.com/status-im/react-native-image-crop-picker.git#v0.36.2-status.0", + "react-native-image-crop-picker": "git+https://github.com/status-im/react-native-image-crop-picker.git#refs/tags/v0.36.2-status.0", "react-native-image-resizer": "^1.2.3", - "react-native-image-viewing": "git+https://github.com/status-im/react-native-image-viewing.git#v0.2.1.status", - "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-5-status", + "react-native-image-viewing": "git+https://github.com/status-im/react-native-image-viewing.git#refs/tags/v0.2.1.status", + "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#refs/tags/v.3.0.0-5-status", "react-native-languages": "^3.0.2", "react-native-linear-gradient": "^2.5.6", "react-native-mail": "^6.1.1", @@ -62,11 +63,11 @@ "react-native-shake": "^3.3.1", "react-native-share": "^7.0.1", "react-native-splash-screen": "^3.2.0", - "react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#v2.5.37", + "react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.5.37", "react-native-svg": "^9.8.4", "react-native-touch-id": "^4.4.1", - "react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v11.16.0-status", - "rn-emoji-keyboard": "git+https://github.com/status-im/rn-emoji-keyboard.git#v0.4.2", + "react-native-webview": "git+https://github.com/status-im/react-native-webview.git#refs/tags/v11.16.0-status", + "rn-emoji-keyboard": "git+https://github.com/status-im/rn-emoji-keyboard.git#refs/tags/v0.4.2", "tdigest": "^0.1.1", "web3-utils": "^1.2.1" }, @@ -81,7 +82,7 @@ "jest": "^25.1.0", "nyc": "^14.1.1", "process": "0.11.10", - "rn-snoopy": "git+https://github.com/status-im/rn-snoopy.git#v2.0.2-status", + "rn-snoopy": "git+https://github.com/status-im/rn-snoopy.git#refs/tags/v2.0.2-status", "shadow-cljs": "^2.10.14" } } diff --git a/yarn.lock b/yarn.lock index b54dd709b58..8ce3f5a9ce8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1238,7 +1238,7 @@ dependencies: deep-assign "^3.0.0" -"@react-native-community/audio-toolkit@git+https://github.com/tbenr/react-native-audio-toolkit.git#v2.0.3-status-v6": +"@react-native-community/audio-toolkit@git+https://github.com/tbenr/react-native-audio-toolkit.git#refs/tags/v2.0.3-status-v6": version "2.0.3" resolved "git+https://github.com/tbenr/react-native-audio-toolkit.git#7ae9055cf6169b30f5089bda7bfcfc1c40a715e5" dependencies: @@ -1246,7 +1246,7 @@ eventemitter3 "^1.2.0" lodash "^4.17.15" -"@react-native-community/cameraroll@git+https://github.com/status-im/react-native-cameraroll.git#v4.0.4-status.0": +"@react-native-community/cameraroll@git+https://github.com/status-im/react-native-cameraroll.git#refs/tags/v4.0.4-status.0": version "4.0.4" resolved "git+https://github.com/status-im/react-native-cameraroll.git#337c5a515e9b0f0728882f73568075553415f523" @@ -1447,6 +1447,11 @@ resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + "@types/hammerjs@^2.0.36": version "2.0.36" resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.36.tgz#17ce0a235e9ffbcdcdf5095646b374c2bf615a4c" @@ -1482,6 +1487,32 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== +"@types/prop-types@*": + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/react-native@*": + version "0.67.2" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.67.2.tgz#801656be65b875cf215cd09de208436df92fa356" + integrity sha512-DyBkq7kw1UngzfvBr8WE41+hL/TWpxOZVaeABJz6Si7DmpT0Rq6vJCYjVaR85ViKSYJvIHpzxYfp0dD+lb3ctA== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "17.0.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" + integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -1997,7 +2028,7 @@ big-integer@^1.6.44: resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== -"bignumber.js@git+https://github.com/status-im/bignumber.js.git#v4.0.2-status": +"bignumber.js@git+https://github.com/status-im/bignumber.js.git#refs/tags/v4.0.2-status": version "4.0.2" resolved "git+https://github.com/status-im/bignumber.js.git#cc066a0a3d6bfe0c436c9957f4ea8344bf963c89" @@ -2797,6 +2828,11 @@ cssstyle@^2.0.0: dependencies: cssom "~0.3.6" +csstype@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + damerau-levenshtein@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" @@ -6588,10 +6624,21 @@ react-native-camera-kit@^8.0.4: dependencies: lodash "^4.14.2" -"react-native-config@git+https://github.com/status-im/react-native-config.git#v1.4.2-status": +"react-native-config@git+https://github.com/status-im/react-native-config.git#refs/tags/v1.4.2-status": version "1.4.2" resolved "git+https://github.com/status-im/react-native-config.git#c3e58d76fed923aaf88eadc5073099fab5ecb346" +react-native-dark-mode@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/react-native-dark-mode/-/react-native-dark-mode-0.2.2.tgz#4faa335e36330bfca832ba8b3d2bd84c7b880381" + integrity sha512-2vhWOOimU7DRKYjCU/pdv0+JpnGKURq5+c7bre093Jtzk57HtlJfd+ViibbC9Y8zh0viIOyKtfL5mYhVhZ6Crw== + dependencies: + "@types/events" "*" + "@types/react" "*" + "@types/react-native" "*" + events "^3.0.0" + toolkit.ts "^0.0.2" + react-native-device-info@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-7.4.0.tgz#694deddfc6de0ff7268ff463d84693ee980c683c" @@ -6640,7 +6687,7 @@ react-native-haptic-feedback@^1.9.0: resolved "https://registry.yarnpkg.com/react-native-haptic-feedback/-/react-native-haptic-feedback-1.9.0.tgz#7d62c54536f04dd5d8f1c2bb8ee444009f2294b9" integrity sha512-tIRbq8k7HK9AoyvXrOHUEFmJd65ZAh1HP9mDyD/gDisG1ApY4Im9UKn0q0of9z7s8AJY3sZA9GMuSKdSBGdKKQ== -"react-native-image-crop-picker@git+https://github.com/status-im/react-native-image-crop-picker.git#v0.36.2-status.0": +"react-native-image-crop-picker@git+https://github.com/status-im/react-native-image-crop-picker.git#refs/tags/v0.36.2-status.0": version "0.36.2" resolved "git+https://github.com/status-im/react-native-image-crop-picker.git#d14a68dcb643328b91e783d3a83561e7d6e0bd25" @@ -6649,11 +6696,11 @@ react-native-image-resizer@^1.2.3: resolved "https://registry.yarnpkg.com/react-native-image-resizer/-/react-native-image-resizer-1.2.3.tgz#21cb2b158ff950e55a0fc01c2cb61375bd5a03ba" integrity sha512-RDPNJglRmWDZ/7hvu+CbpsKYl6AQmseL8cWX4UkLAHxQWNc5ZdYhP/9avC5xCfyiwkRw+Zmkmv78HO0kt0ewhQ== -"react-native-image-viewing@git+https://github.com/status-im/react-native-image-viewing.git#v0.2.1.status": +"react-native-image-viewing@git+https://github.com/status-im/react-native-image-viewing.git#refs/tags/v0.2.1.status": version "0.2.1" resolved "git+https://github.com/status-im/react-native-image-viewing.git#94af89356f2e4e08f462370c77e4778d7626ce2f" -"react-native-keychain@git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-5-status": +"react-native-keychain@git+https://github.com/status-im/react-native-keychain.git#refs/tags/v.3.0.0-5-status": version "3.0.0-rc.3" resolved "git+https://github.com/status-im/react-native-keychain.git#9b0d9b283116947cf125e12b6d1d17203604f0d9" @@ -6734,7 +6781,7 @@ react-native-splash-screen@^3.2.0: resolved "https://registry.yarnpkg.com/react-native-splash-screen/-/react-native-splash-screen-3.2.0.tgz#d47ec8557b1ba988ee3ea98d01463081b60fff45" integrity sha512-Ls9qiNZzW/OLFoI25wfjjAcrf2DZ975hn2vr6U9gyuxi2nooVbzQeFoQS5vQcbCt9QX5NY8ASEEAtlLdIa6KVg== -"react-native-status-keycard@git+https://github.com/status-im/react-native-status-keycard.git#v2.5.37": +"react-native-status-keycard@git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.5.37": version "2.5.37" resolved "git+https://github.com/status-im/react-native-status-keycard.git#af61b0213adbf4b5a6bae97c85496d95007d5acb" @@ -6751,7 +6798,7 @@ react-native-touch-id@^4.4.1: resolved "https://registry.yarnpkg.com/react-native-touch-id/-/react-native-touch-id-4.4.1.tgz#8b1bb2d04c30bac36bb9696d2d723e719c4a8b08" integrity sha512-1jTl8fC+0fxvqegy/XXTyo6vMvPhjzkoDdaqoYZx0OH8AT250NuXnNPyKktvigIcys3+2acciqOeaCall7lrvg== -"react-native-webview@git+https://github.com/status-im/react-native-webview.git#v11.16.0-status": +"react-native-webview@git+https://github.com/status-im/react-native-webview.git#refs/tags/v11.16.0-status": version "11.16.0" resolved "git+https://github.com/status-im/react-native-webview.git#9d554dd25b33d799c37eb356c0dfa42ca8bd4ff7" dependencies: @@ -7093,11 +7140,11 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -"rn-emoji-keyboard@git+https://github.com/status-im/rn-emoji-keyboard.git#v0.4.2": +"rn-emoji-keyboard@git+https://github.com/status-im/rn-emoji-keyboard.git#refs/tags/v0.4.2": version "0.4.2" resolved "git+https://github.com/status-im/rn-emoji-keyboard.git#969814269cc51fae2c1fd0375e8509fa066cdc7f" -"rn-snoopy@git+https://github.com/status-im/rn-snoopy.git#v2.0.2-status": +"rn-snoopy@git+https://github.com/status-im/rn-snoopy.git#refs/tags/v2.0.2-status": version "2.0.2" resolved "git+https://github.com/status-im/rn-snoopy.git#f23dc13469c6c2a694649f658cdc1d1eaf8def64" dependencies: @@ -7938,6 +7985,11 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toolkit.ts@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/toolkit.ts/-/toolkit.ts-0.0.2.tgz#91bde730e5e6ad1a22146cdaf83f4a52721cf3b2" + integrity sha512-yJJTVbCwiD6AfFgReewJCGJuODmyZUeL1sDjnxp33t0UBxnezgQrLbz/F9++RC28CTlk5u5pVji4TbeondYEkw== + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"