Add managing of proot-static

This commit is contained in:
Tobias Happ 2019-11-28 00:42:42 +01:00 committed by Alexander Sosedkin
parent 41fca9b4e9
commit eb2fcc80f5
6 changed files with 48 additions and 21 deletions

View file

@ -147,6 +147,7 @@ in
ln --symbolic ${config.environment.files.login} $out/filesystem/bin/login
ln --symbolic ${config.environment.files.loginInner} $out/filesystem/usr/lib/login-inner
ln --symbolic ${config.environment.files.prootStatic}/bin/proot-static $out/filesystem/bin/proot-static
ln --symbolic ${config.environment.binSh} $out/filesystem/bin/sh
ln --symbolic ${config.environment.usrBinEnv} $out/filesystem/usr/bin/env

View file

@ -12,6 +12,13 @@ with lib;
options = {
build = {
arch = mkOption {
type = types.enum [ "aarch64" "i686" ];
default = if pkgs.stdenv.isAarch64 then "aarch64" else "i686";
internal = true;
description = "Destination arch.";
};
initialBuild = mkOption {
type = types.bool;
default = false;

View file

@ -11,24 +11,17 @@ with lib;
options = {
build = {
arch = mkOption {
type = types.enum [ "aarch64" "i686" ];
description = "Destination arch.";
build.channel = {
nixpkgs = mkOption {
type = types.str;
default = "https://nixos.org/channels/nixos-19.09";
description = "Channel URL for nixpkgs.";
};
channel = {
nixpkgs = mkOption {
type = types.str;
default = "https://nixos.org/channels/nixos-19.09";
description = "Channel URL for nixpkgs.";
};
nix-on-droid = mkOption {
type = types.str;
default = "https://github.com/t184256/nix-on-droid-bootstrap/archive/master.tar.gz";
description = "Channel URL for nix-on-droid.";
};
nix-on-droid = mkOption {
type = types.str;
default = "https://github.com/t184256/nix-on-droid-bootstrap/archive/master.tar.gz";
description = "Channel URL for nix-on-droid.";
};
};

View file

@ -6,6 +6,8 @@
with lib;
let
cfg = config.environment.files;
login = pkgs.callPackage ./login.nix { inherit config; };
loginInner = pkgs.callPackage ./login-inner.nix { inherit config customPkgs; };
@ -31,6 +33,13 @@ in
internal = true;
description = "Login-inner script.";
};
prootStatic = mkOption {
type = types.package;
readOnly = true;
internal = true;
description = "proot-static package.";
};
};
};
@ -40,14 +49,26 @@ in
config = {
build.activation.installLoginScripts = ''
$DRY_RUN_CMD mkdir $VERBOSE_ARG --parents /bin /usr/lib
$DRY_RUN_CMD cp $VERBOSE_ARG ${login} /bin/login
$DRY_RUN_CMD cp $VERBOSE_ARG ${loginInner} /usr/lib/login-inner
'';
build.activation = {
installLoginScripts = ''
$DRY_RUN_CMD mkdir $VERBOSE_ARG --parents /bin /usr/lib
$DRY_RUN_CMD cp $VERBOSE_ARG ${login} /bin/login
$DRY_RUN_CMD cp $VERBOSE_ARG ${loginInner} /usr/lib/login-inner
'';
installProotStatic = ''
$DRY_RUN_CMD mkdir $VERBOSE_ARG --parents /bin
$DRY_RUN_CMD cp $VERBOSE_ARG ${cfg.prootStatic}/bin/proot-static /bin/.proot-static.new
'';
};
environment.files = {
inherit login loginInner;
prootStatic =
if config.build.arch == "aarch64"
then "/nix/store/40zq5iy3iaj3pc9phshxmp4x8k7084lf-proot-termux-unstable-2019-09-05-aarch64-unknown-linux-android"
else "/nix/store/wlr4f16mfsg1fkj4wdrppcmh0kd3lgwv-proot-termux-unstable-2019-09-05-i686-unknown-linux-android";
};
};

View file

@ -31,6 +31,10 @@ writeScript "login" ''
exec ${installationDir}/bin/login "$@"
''
else ''
if [[ -x ${installationDir}/bin/.proot-static.new ]] && ! $(/system/bin/pgrep proot-static); then
/system/bin/mv ${installationDir}/bin/.proot-static.new ${installationDir}/bin/proot-static
fi
exec ${installationDir}/bin/proot-static \
-b ${installationDir}/nix:/nix \
-b ${installationDir}/bin:/bin \

View file

@ -8,6 +8,7 @@ let
};
# head of nixos-19.09 as of 2019-10-14
# note: when updating nixpkgs, update store paths of proot-termux in modules/environment/login/default.nix
pinnedPkgsSrc = builtins.fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/45a25ff41a2309099ff2e70b2f37debd5e567618.tar.gz";
sha256 = "0w37p98i47d7snhckz8a3a60v0f05b5047vsm4rczink9mk9x7r3";