mirror of
https://github.com/nix-community/nix-on-droid.git
synced 2025-11-08 19:46:07 +01:00
Add (untested) support for multiple arches
This commit is contained in:
parent
d76c378c2a
commit
9a154663de
3 changed files with 39 additions and 19 deletions
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -1,6 +1,12 @@
|
||||||
bootstrap-aarch64.zip
|
|
||||||
bootstrap
|
bootstrap
|
||||||
|
bootstrap-aarch64.zip
|
||||||
|
bootstrap-i686.zip
|
||||||
|
bootstrap-x86_64.zip
|
||||||
nix-*-aarch64-linux.tar.bz2
|
nix-*-aarch64-linux.tar.bz2
|
||||||
|
nix-*-i686-linux.tar.bz2
|
||||||
|
nix-*-x86_64-linux.tar.bz2
|
||||||
proot-host
|
proot-host
|
||||||
proot-tgt
|
proot-aarch64
|
||||||
|
proot-i686
|
||||||
|
proot-x86_64
|
||||||
qemu-aarch64
|
qemu-aarch64
|
||||||
|
|
|
||||||
20
proot.nix
20
proot.nix
|
|
@ -1,8 +1,10 @@
|
||||||
|
{arch}:
|
||||||
|
|
||||||
let
|
let
|
||||||
pinnedPkgs = builtins.fetchTarball {
|
pinnedPkgs = builtins.fetchTarball {
|
||||||
name = "nixos-19.03-2019-06-14";
|
name = "nixos-19.03-2019-07-14";
|
||||||
url = https://github.com/nixos/nixpkgs/archive/86191b5b91322bdd88303e31d4507a684fc1b120.tar.gz;
|
url = https://github.com/nixos/nixpkgs/archive/cf16778cd6870d349581eb30e350ff2f95a55e06.tar.gz;
|
||||||
sha256 = "1di2s3d9fqvidix2ww3jiaq2m96xl0qn3gxh7vlw8j0z8b13z175";
|
sha256 = "1xzsybpw5k68fima6pxpl7b3ifgisrm1cyci4hi10gvx9q8xj97z";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildPkgs = import pinnedPkgs {};
|
buildPkgs = import pinnedPkgs {};
|
||||||
|
|
@ -11,19 +13,23 @@ let
|
||||||
libjpeg = buildPkgs.libjpeg;
|
libjpeg = buildPkgs.libjpeg;
|
||||||
};
|
};
|
||||||
|
|
||||||
crossPkgs = import pinnedPkgs {
|
crossSystem = rec {
|
||||||
crossSystem = (import "${pinnedPkgs}/lib").systems.examples.aarch64-android-prebuilt;
|
config = arch + "-unknown-linux-android";
|
||||||
|
sdkVer = "24";
|
||||||
|
ndkVer = "18b";
|
||||||
|
useAndroidPrebuilt = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
crossPkgs = import pinnedPkgs { inherit crossSystem; };
|
||||||
|
|
||||||
crossStaticPkgs = import pinnedPkgs {
|
crossStaticPkgs = import pinnedPkgs {
|
||||||
crossSystem = (import "${pinnedPkgs}/lib").systems.examples.aarch64-android-prebuilt;
|
inherit crossSystem;
|
||||||
crossOverlays = [
|
crossOverlays = [
|
||||||
(import "${pinnedPkgs}/pkgs/top-level/static.nix")
|
(import "${pinnedPkgs}/pkgs/top-level/static.nix")
|
||||||
overlay-jpeg-no-static
|
overlay-jpeg-no-static
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
talloc = crossPkgs.stdenv.mkDerivation rec {
|
talloc = crossPkgs.stdenv.mkDerivation rec {
|
||||||
name = "talloc-2.1.14";
|
name = "talloc-2.1.14";
|
||||||
|
|
||||||
|
|
|
||||||
28
script
28
script
|
|
@ -16,9 +16,11 @@
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
# You should have received a copy of the GNU Lesser General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
set -ue
|
set -uex
|
||||||
|
|
||||||
ARCHIVE=nix-2.2.2-aarch64-linux.tar.bz2
|
ARCH=${1:-aarch64}
|
||||||
|
|
||||||
|
ARCHIVE=nix-2.2.2-$ARCH-linux.tar.bz2
|
||||||
BASEURL=https://nixos.org/releases/nix/nix-2.2.2
|
BASEURL=https://nixos.org/releases/nix/nix-2.2.2
|
||||||
URL="$BASEURL/$ARCHIVE"
|
URL="$BASEURL/$ARCHIVE"
|
||||||
INST="/data/data/com.termux.nix/files/usr"
|
INST="/data/data/com.termux.nix/files/usr"
|
||||||
|
|
@ -28,14 +30,16 @@ export PROOT_NO_SECCOMP=1 # see https://github.com/proot-me/PRoot/issues/106
|
||||||
rm -rf ./bootstrap
|
rm -rf ./bootstrap
|
||||||
mkdir -p bootstrap
|
mkdir -p bootstrap
|
||||||
|
|
||||||
echo "building proot-tgt (this may take a lot of time...)"
|
echo "building proot for $ARCH (this may take a lot of time...)"
|
||||||
nix build -f proot.nix -o proot-tgt
|
nix build -f proot.nix -o proot-$ARCH --argstr arch aarch64
|
||||||
|
|
||||||
wget https://github.com/proot-me/proot-static-build/blob/master/static/proot-x86_64?raw=true -O proot-host
|
wget https://github.com/proot-me/proot-static-build/blob/master/static/proot-x86_64?raw=true -O proot-host
|
||||||
chmod +x proot-host
|
chmod +x proot-host
|
||||||
|
|
||||||
wget https://github.com/multiarch/qemu-user-static/releases/download/v3.1.0-2/qemu-aarch64-static -O qemu-aarch64
|
if [[ $ARCH != x86_64 && $ARCH != i686 ]]; then
|
||||||
chmod +x qemu-aarch64
|
wget https://github.com/multiarch/qemu-user-static/releases/download/v4.0.0-4/qemu-$ARCH-static -O qemu-$ARCH
|
||||||
|
chmod +x qemu-$ARCH
|
||||||
|
fi
|
||||||
|
|
||||||
echo "downloading nix archive"
|
echo "downloading nix archive"
|
||||||
wget $URL -O $ARCHIVE
|
wget $URL -O $ARCHIVE
|
||||||
|
|
@ -67,7 +71,11 @@ echo "nix derivation found at $TGT_NIX"
|
||||||
TGT_CACERT=$(find bootstrap/nix/store -path '*-nss-cacert-*/ca-bundle.crt' | sed s/^bootstrap//)
|
TGT_CACERT=$(find bootstrap/nix/store -path '*-nss-cacert-*/ca-bundle.crt' | sed s/^bootstrap//)
|
||||||
echo "cacert found at $TGT_CACERT"
|
echo "cacert found at $TGT_CACERT"
|
||||||
|
|
||||||
PROOT_CMD="./proot-host -q ./qemu-aarch64 -r bootstrap -w /"
|
if [[ $ARCH != x86_64 && $ARCH != i686 ]]; then
|
||||||
|
PROOT_CMD="./proot-host -q ./qemu-$ARCH -r bootstrap -w /"
|
||||||
|
else
|
||||||
|
PROOT_CMD="./proot-host -b /dev -r bootstrap -w /"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "initialising Nix database..."
|
echo "initialising Nix database..."
|
||||||
$PROOT_CMD "$TGT_NIX/bin/nix-store" --init
|
$PROOT_CMD "$TGT_NIX/bin/nix-store" --init
|
||||||
|
|
@ -77,7 +85,7 @@ $PROOT_CMD "$TGT_NIX/bin/nix-store" --load-db < bootstrap/nix-installer/.reginfo
|
||||||
|
|
||||||
echo "injecting proot..."
|
echo "injecting proot..."
|
||||||
mkdir -p bootstrap/bin
|
mkdir -p bootstrap/bin
|
||||||
cp proot-tgt/bin/proot bootstrap/bin/proot
|
cp proot-$ARCH/bin/proot bootstrap/bin/proot
|
||||||
|
|
||||||
echo "making up some resolv.conf..."
|
echo "making up some resolv.conf..."
|
||||||
mkdir -p bootstrap/etc
|
mkdir -p bootstrap/etc
|
||||||
|
|
@ -282,7 +290,7 @@ while read -r LINK; do
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "packing..."
|
echo "packing..."
|
||||||
rm -f bootstrap-aarch64.zip
|
rm -f bootstrap-$ARCH.zip
|
||||||
(cd bootstrap; zip -q -9 -r ../bootstrap-aarch64 ./* ./.l2s)
|
(cd bootstrap; zip -q -9 -r ../bootstrap-$ARCH ./* ./.l2s)
|
||||||
|
|
||||||
echo "done"
|
echo "done"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue