# I used this shell.nix to build LineageOS 13.0 for my maguro (Samsung Galaxy Nexus GSM) phone # The build instructions for normal Linuxes are here: https://wiki.lineageos.org/devices/maguro/build # NixOS instructions are as follows: # cd into an empty directory of your choice # copy this file there # in nix-shell: # $ repo init -u https://github.com/LineageOS/android.git -b cm-13.0 # $ repo sync # $ source build/envsetup.sh # $ breakfast maguro # Get binary blobs (I followed https://forum.xda-developers.com/showpost.php?s=a6ee98b07b1b0a2f4004b902a65d9dcd&p=76981184&postcount=4) # $ repo sync; breakfast maguro # $ ccache -M 50G # $ croot # $ brunch maguro # Voilà ! It Just Works™ (at least it did for me) # Warning: the hardened NixOS kernel disables 32 bit emulation, which made me run into multiple "Exec format error" errors. # To fix, use the default kernel, or enable "IA32_EMULATION y" in the kernel config. let # nixpkgs-unstable does not have jdk7 anymore. I used the nixos-18.03 channel pkgs = import {}; # Inspired from https://nixos.wiki/wiki/Android#Building_Android_on_NixOS # I ad to ass several packages to make it work for me fhs = pkgs.buildFHSUserEnv { name = "android-env"; targetPkgs = pkgs: with pkgs; [ androidenv.platformTools bc binutils bison ccache curl flex gcc git gitRepo gnumake gnupg gperf imagemagick jdk7 libxml2 lz4 lzop m4 maven nettools openssl perl pngcrush procps python2 rsync schedtool SDL squashfsTools unzip utillinux wxGTK30 xml2 zip ]; multiPkgs = pkgs: with pkgs; [ zlib ncurses5 libcxx readline ]; runScript = "bash"; profile = '' export USE_CCACHE=1 export ANDROID_JAVA_HOME=${pkgs.jdk7.home} # Building involves a phase of unzipping large files into a temporary directory export TMPDIR=/tmp ''; }; in pkgs.stdenv.mkDerivation { name = "android-env-shell"; nativeBuildInputs = [ fhs ]; shellHook = "exec android-env"; }