Jakub Sokołowski
2f9593a7d2
Changes: - Drop a bunch of `watch-{android,ios}-*` tagets - Replace them with one `run-clojure` - Drop a bunch of `react-native-*` targets - Replace them with one `run-metro` - Replace `run-{android,ios}` with `run-{android,ios}` - Drop `startdev-{android,ios,desktop}*` targets - Drop `prod-build-{android,ios}` as deprecated - Drop `src/status_im/android/core.cljs` - Drop `src/status_im/ios/core.cljs` - Move `lsof` tool to `default` shell - Replace them with one `init` `src/status_im/core.cljs` - Use `init` in one `shadow-cljs.edn` target `mobile` - Use `mobile` target in `nix/mobile/android/jsbundle` - Update instructions in `STARTING_GUIDE.md` - Use `gradle` shell for `android-clean` target Signed-off-by: Jakub Sokołowski <jakub@status.im> |
||
---|---|---|
.. | ||
deps | ||
desktop | ||
lib | ||
mobile | ||
pkgs | ||
scripts | ||
status-go | ||
tools | ||
DETAILS.md | ||
KNOWN_ISSUES.md | ||
README.md | ||
default.nix | ||
nix.conf | ||
overlay.nix | ||
pkgs.nix | ||
shells.nix | ||
targets.nix |
README.md
Description
This folder contains configuration for Nix, a purely functional package manager used by the Status app for its build process.
Configuration
The main config file is nix/nix.conf
and its main purpose is defining the binary caches which allow download of packages to avoid having to compile them yourself locally.
NOTE: If you are in Asia you might want to add the https://nix-cache-cn.status.im/
to be first in order of substituters
. Removing cache.nixos.org
could also help.
Build arguments
We leverage the standard nixpkgs config
argument for our own parameterization of the builds (e.g. to pass a build number or build type).
Here is a sample structure of the config
attribute set:
config = {
status-im = {
build-type = "pr"; # Build type (influences which .env file gets used for feature flags)
build-number = 9999; # Used for versionCode and CFBundleVersion in Android and iOS respectively
android = {
gradle-opts = ""; # Gradle options passed for Android builds
keystore-path = ""; # Path to keystore for signing the APK
abi-split = false; # If APKs should be split based on architectures
abi-include = "x86"; # Android architectures to build for
};
status-go = {
src-override = "$HOME/my/source/status-go"; # local source override
};
};
};
Shell
In order to access an interactive Nix shell a user should run make shell
.
The Nix shell is started in this repo via the nix/scripts/shell.sh
script, which is a wrapper around the nix-shell
command and is intended for use with our main Makefile
. This allows for an implicit use of nix-shell
as the default shell in the Makefile
.
Normally the shell starts without any specific target platform, if you want to change that you should export the TARGET
env variable with appropriate value:
make shell TARGET=android
This way your shell and all other nix commands should run in a setup that is tailored towards Android development.
For valid values you can check the nix/shells.nix
file.
Using a local status-go repository
If you need to use a locally checked-out status-go repository, you can achieve that by defining the STATUS_GO_SRC_OVERRIDE
environment variable:
export STATUS_GO_SRC_OVERRIDE=$GOPATH/src/github.com/status-im/status-go
make release-android
Known Issues
See KNOWN_ISSUES.md
.