-
-
Save mio-19/0877c8ff3b6f26c89e84c2131b15215b to your computer and use it in GitHub Desktop.
Building LineageOS on NixOS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # I used this shell.nix to build LineageOS 21.0 for redfin (Google Pixel 5) | |
| # | |
| # IMPORANT NOTE: I had to use a pure shell for my builds to work, i.e: `nix-shell --pure` rather than `nix-shell` | |
| # | |
| # The build instructions are here: https://wiki.lineageos.org/devices/redfin/build | |
| # | |
| # Warning (from forked gist, was added August 1st 2018): | |
| # 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. | |
| # | |
| # Created using: | |
| # https://gist.github.com/Nadrieril/d006c0d9784ba7eff0b092796d78eb2a | |
| # https://nixos.wiki/wiki/Android#Building_Android_on_NixOS | |
| # forked from: https://gist.github.com/Arian04/bea169c987d46a7f51c63a68bc117472 | |
| { | |
| pkgs ? import <nixpkgs> { }, | |
| }: | |
| let | |
| fhs = pkgs.buildFHSEnv { | |
| name = "android-env"; | |
| targetPkgs = | |
| pkgs: with pkgs; [ | |
| android-tools | |
| libxcrypt-legacy # libcrypt.so.1 | |
| freetype # libfreetype.so.6 | |
| fontconfig # java NPE: "sun.awt.FontConfiguration.head" is null | |
| yaml-cpp # necessary for some kernels according to a comment on the gist | |
| # Some of the packages here are probably unecessary but I don't wanna figure out which | |
| bc | |
| binutils | |
| bison | |
| ccache | |
| curl | |
| flex | |
| gcc | |
| git | |
| git-repo | |
| git-lfs | |
| gnumake | |
| gnupg | |
| gperf | |
| imagemagick | |
| jdk17 # jdk11 | |
| elfutils | |
| libxml2 | |
| libxslt | |
| lz4 | |
| lzop | |
| m4 | |
| nettools | |
| openssl.dev | |
| openssl | |
| perl | |
| pngcrush | |
| procps | |
| python3 | |
| rsync | |
| schedtool | |
| SDL | |
| squashfsTools | |
| unzip | |
| util-linux | |
| xml2 | |
| zip | |
| # only necessary if you wanna use `runScript = "zsh";` below | |
| zsh | |
| ]; | |
| multiPkgs = | |
| pkgs: with pkgs; [ | |
| zlib | |
| ncurses5 | |
| libcxx | |
| readline | |
| libgcc # crtbeginS.o | |
| iconv # ??? - i put this here and by the time i went back to remove unecessary packages i forgot why | |
| iconv.dev # sys/types.h | |
| ]; | |
| runScript = "zsh"; # personal preference, you could set this to bash instead if you want | |
| profile = '' | |
| export ALLOW_NINJA_ENV=true | |
| export USE_CCACHE=1 | |
| export CCACHE_EXEC=/usr/bin/ccache | |
| export ANDROID_JAVA_HOME=${pkgs.jdk11.home} | |
| # Building involves a phase of unzipping large files into a temporary directory | |
| export TMPDIR=/tmp | |
| export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${pkgs.ncurses5}/lib | |
| ''; | |
| }; | |
| in | |
| pkgs.stdenv.mkDerivation { | |
| name = "android-env-shell"; | |
| nativeBuildInputs = [ fhs ]; | |
| shellHook = "exec android-env"; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment