Link to profile in activation script instead of nix-on-droid

This commit is contained in:
Tobias Happ 2019-11-27 10:33:35 +01:00 committed by Alexander Sosedkin
parent be7dfc7195
commit cd58e8dbd4
2 changed files with 37 additions and 21 deletions

View file

@ -108,6 +108,13 @@ in
internal = true; internal = true;
description = "Package containing /etc files."; description = "Package containing /etc files.";
}; };
profileDirectory = mkOption {
type = types.path;
readOnly = true;
internal = true;
description = "Path to nix-on-droid profile.";
};
}; };
}; };
@ -117,27 +124,36 @@ in
config = { config = {
build.activationPackage = build = {
pkgs.runCommand activationAfter.linkProfile = ''
"nix-on-droid-generation" generationDir="$(dirname "$(realpath $0)")"
{ $DRY_RUN_CMD nix-env --profile "${cfg.profileDirectory}" --set "$generationDir"
preferLocalBuild = true; '';
allowSubstitutes = false;
}
''
mkdir --parents $out/filesystem/{bin,usr/{bin,lib}}
cp ${activationScript} $out/activate activationPackage =
pkgs.runCommand
"nix-on-droid-generation"
{
preferLocalBuild = true;
allowSubstitutes = false;
}
''
mkdir --parents $out/filesystem/{bin,usr/{bin,lib}}
ln --symbolic ${config.build.etc}/etc $out/etc cp ${activationScript} $out/activate
ln --symbolic ${config.environment.path} $out/nix-on-droid-path
ln --symbolic ${config.environment.files.login} $out/filesystem/bin/login ln --symbolic ${config.build.etc}/etc $out/etc
ln --symbolic ${config.environment.files.loginInner} $out/filesystem/usr/lib/login-inner ln --symbolic ${config.environment.path} $out/nix-on-droid-path
ln --symbolic ${config.environment.binSh} $out/filesystem/bin/sh ln --symbolic ${config.environment.files.login} $out/filesystem/bin/login
ln --symbolic ${config.environment.usrBinEnv} $out/filesystem/usr/bin/env ln --symbolic ${config.environment.files.loginInner} $out/filesystem/usr/lib/login-inner
'';
ln --symbolic ${config.environment.binSh} $out/filesystem/bin/sh
ln --symbolic ${config.environment.usrBinEnv} $out/filesystem/usr/bin/env
'';
profileDirectory = "/nix/var/nix/profiles/nix-on-droid";
};
}; };

View file

@ -34,7 +34,9 @@ function doHelp() {
} }
function doSwitch() { function doSwitch() {
local profileDirectory="/nix/var/nix/profiles/nix-on-droid" if [[ -v VERBOSE ]]; then
PASSTHROUGH_OPTS+=(--show-trace)
fi
echo "Building activation package..." echo "Building activation package..."
nix build \ nix build \
@ -43,15 +45,13 @@ function doSwitch() {
${PASSTHROUGH_OPTS[*]} \ ${PASSTHROUGH_OPTS[*]} \
activationPackage activationPackage
echo "Save profile activation package..." echo "Run activation script..."
generationDir="$(nix path-info \ generationDir="$(nix path-info \
--file "<nix-on-droid/modules>" \ --file "<nix-on-droid/modules>" \
${PASSTHROUGH_OPTS[*]} \ ${PASSTHROUGH_OPTS[*]} \
activationPackage \ activationPackage \
)" )"
nix-env --profile "${profileDirectory}" --set "${generationDir}"
echo "Run activation script..."
"${generationDir}/activate" "${generationDir}/activate"
} }