status-react/shell.nix

54 lines
1.6 KiB
Nix

{ nixpkgs-bootstrap ? import ./nix/nixpkgs-bootstrap.nix { },
pkgs ? nixpkgs-bootstrap.pkgs,
target-os ? "all" }:
with pkgs;
let
projectDeps = import ./default.nix { inherit target-os pkgs nixpkgs-bootstrap; inherit (nixpkgs-bootstrap) config; };
platform = callPackage ./nix/platform.nix { inherit target-os; };
useFastlanePkg = (platform.targetAndroid && !stdenv'.isDarwin);
# TODO: Try to use stdenv for iOS. The problem is with building iOS as the build is trying to pass parameters to Apple's ld that are meant for GNU's ld (e.g. -dynamiclib)
stdenv' = stdenvNoCC;
mkShell' = mkShell.override { stdenv = stdenv'; };
fastlane' = callPackage ./fastlane {
bundlerEnv = _: pkgs.bundlerEnv {
name = "fastlane-gems";
gemdir = ./fastlane;
};
};
in mkShell' {
buildInputs = [
# utilities
bash
curl
file
git
gnumake
jq
ncurses
lsof # used in scripts/start-react-native.sh
ps # used in scripts/start-react-native.sh
unzip
wget
] ++
(if useFastlanePkg then [ fastlane' ] else lib.optionals platform.targetMobile [ bundler ruby ]); # bundler/ruby used for fastlane on macOS
inputsFrom = [ projectDeps ];
TARGET_OS = target-os;
shellHook = ''
set -e
export STATUS_REACT_HOME=$(git rev-parse --show-toplevel)
export PATH=$STATUS_REACT_HOME/node_modules/.bin:$PATH
${projectDeps.shellHook}
${lib.optionalString useFastlanePkg fastlane'.shellHook}
if [ "$IN_NIX_SHELL" != 'pure' ] && [ ! -f $STATUS_REACT_HOME/.ran-setup ]; then
$STATUS_REACT_HOME/scripts/setup
touch $STATUS_REACT_HOME/.ran-setup
fi
set +e
'';
}