mirror of
https://github.com/nix-community/nix-on-droid.git
synced 2025-12-03 15:41:04 +01:00
Add a build script to patch paths and inject proot
This commit is contained in:
parent
c399757156
commit
4018b987bf
4 changed files with 76 additions and 3 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,2 +1,3 @@
|
||||||
result
|
result
|
||||||
result-*
|
result-*
|
||||||
|
out
|
||||||
|
|
|
||||||
58
build.sh
Executable file
58
build.sh
Executable file
|
|
@ -0,0 +1,58 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
repo=${repo:-t184256/nix-on-droid-bootstrap} # set this to your fork!
|
||||||
|
branch=${branch:-$(git rev-parse --abbrev-ref HEAD)}
|
||||||
|
|
||||||
|
arches='aarch64 i686'
|
||||||
|
nixOnDroidChannelURL=https://github.com/$repo/archive/$branch.tar.gz
|
||||||
|
|
||||||
|
mkdir -p out
|
||||||
|
rm -f out/*
|
||||||
|
for arch in $arches; do
|
||||||
|
echo $arch: building talloc...
|
||||||
|
nix build --show-trace -f pkgs --argstr arch $arch tallocStatic -o out/talloc-$arch
|
||||||
|
talloc=$(realpath out/talloc-$arch)
|
||||||
|
|
||||||
|
echo $arch: building proot...
|
||||||
|
nix build --show-trace -f pkgs --argstr arch $arch prootTermux -o out/proot-$arch
|
||||||
|
proot=$(realpath out/proot-$arch)
|
||||||
|
|
||||||
|
echo $arch: patching proot path in modules/environment/login/default.nix...
|
||||||
|
grep "$arch = \"/nix/store/" modules/environment/login/default.nix
|
||||||
|
sed -i "s|$arch = \"/nix/store/.*\";|$arch = \"$proot\";|" modules/environment/login/default.nix
|
||||||
|
grep "$arch = \"/nix/store/" modules/environment/login/default.nix
|
||||||
|
|
||||||
|
echo $arch: building nix-on-droid...
|
||||||
|
nix build --show-trace -f pkgs --argstr arch $arch --argstr nixOnDroidChannelURL $nixOnDroidChannelURL bootstrapZip -o out/nix-on-droid-$arch
|
||||||
|
|
||||||
|
echo $arch: injecting talloc/proot for initial bootstrap
|
||||||
|
pwd
|
||||||
|
|
||||||
|
cat out/nix-on-droid-$arch/bootstrap-$arch.zip > out/bootstrap-$arch.zip
|
||||||
|
nix-store --export --readonly-mode $talloc > out/talloc-$arch.closure
|
||||||
|
nix-store --export --readonly-mode $proot > out/proot-$arch.closure
|
||||||
|
|
||||||
|
mkdir out/repack-$arch
|
||||||
|
pushd out/repack-$arch >/dev/null
|
||||||
|
unzip -q ../bootstrap-$arch.zip
|
||||||
|
rm ../bootstrap-$arch.zip
|
||||||
|
cp ../talloc-$arch.closure ./talloc.closure
|
||||||
|
cp ../proot-$arch.closure ./proot.closure
|
||||||
|
zip --quiet -r ../bootstrap-$arch.zip .
|
||||||
|
popd >/dev/null
|
||||||
|
chmod -R +w out/repack-$arch
|
||||||
|
rm -rf out/repack-$arch
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
if [ -z "$rsync_to" ]; then
|
||||||
|
echo 'Done. Now put out/bootstrap-*.zip on some HTTP server and point the app to it. Good luck!'
|
||||||
|
else
|
||||||
|
if [ $branch == master ]; then
|
||||||
|
rsync -vP out/bootstrap-*.zip "$rsync_to/bootstrap/"
|
||||||
|
else
|
||||||
|
rsync -vP out/bootstrap-*.zip "$rsync_to/bootstrap-$branch/"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
@ -84,9 +84,12 @@ in
|
||||||
inherit login loginInner;
|
inherit login loginInner;
|
||||||
|
|
||||||
prootStatic =
|
prootStatic =
|
||||||
if config.build.arch == "aarch64"
|
let crosscompiled_paths = {
|
||||||
then "/nix/store/r09n7pp4fwhrld2a1k2al6bgdx2qqfaj-proot-termux-unstable-2019-09-05-aarch64-unknown-linux-android"
|
aarch64 = "/nix/store/r09n7pp4fwhrld2a1k2al6bgdx2qqfaj-proot-termux-unstable-2019-09-05-aarch64-unknown-linux-android";
|
||||||
else "/nix/store/ccv4y9ndl1w7ksmwnsr9jm2iwnrrbgcq-proot-termux-unstable-2019-09-05-i686-unknown-linux-android";
|
i686 = "/nix/store/4gpm0rmrq0mm69kl3cb1gjslr7ihhp01-proot-termux-unstable-2019-09-05-i686-unknown-linux-android";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
"${crosscompiled_paths.${config.build.arch}}";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,17 @@ writeText "login-inner" ''
|
||||||
|
|
||||||
export NIX_SSL_CERT_FILE=${cacert}
|
export NIX_SSL_CERT_FILE=${cacert}
|
||||||
|
|
||||||
|
if [ -r ${config.build.installationDir}/proot.closure ]; then
|
||||||
|
echo "Injecting bundled talloc closure..."
|
||||||
|
${nix}/bin/nix-store --import < ${config.build.installationDir}/talloc.closure
|
||||||
|
${coreutils}/bin/rm -f ${config.build.installationDir}/talloc.closure
|
||||||
|
echo "Injecting bundled proot closure..."
|
||||||
|
${nix}/bin/nix-store --import < ${config.build.installationDir}/proot.closure
|
||||||
|
${coreutils}/bin/rm -f ${config.build.installationDir}/proot.closure
|
||||||
|
else
|
||||||
|
echo "No bundled talloc/proot closures found, which is OK for official builds..."
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Installing and updating nix-channels..."
|
echo "Installing and updating nix-channels..."
|
||||||
${nix}/bin/nix-channel --add ${config.build.channel.nixpkgs} nixpkgs
|
${nix}/bin/nix-channel --add ${config.build.channel.nixpkgs} nixpkgs
|
||||||
${nix}/bin/nix-channel --update nixpkgs
|
${nix}/bin/nix-channel --update nixpkgs
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue