mirror of
https://github.com/nix-community/nix-on-droid.git
synced 2025-11-08 19:46:07 +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-*
|
||||
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;
|
||||
|
||||
prootStatic =
|
||||
if config.build.arch == "aarch64"
|
||||
then "/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";
|
||||
let crosscompiled_paths = {
|
||||
aarch64 = "/nix/store/r09n7pp4fwhrld2a1k2al6bgdx2qqfaj-proot-termux-unstable-2019-09-05-aarch64-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}
|
||||
|
||||
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..."
|
||||
${nix}/bin/nix-channel --add ${config.build.channel.nixpkgs} nixpkgs
|
||||
${nix}/bin/nix-channel --update nixpkgs
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue