diff --git a/modules/build/activation.nix b/modules/build/activation.nix index f266596..1603602 100644 --- a/modules/build/activation.nix +++ b/modules/build/activation.nix @@ -108,6 +108,13 @@ in internal = true; 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 = { - build.activationPackage = - pkgs.runCommand - "nix-on-droid-generation" - { - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - mkdir --parents $out/filesystem/{bin,usr/{bin,lib}} + build = { + activationAfter.linkProfile = '' + generationDir="$(dirname "$(realpath $0)")" + $DRY_RUN_CMD nix-env --profile "${cfg.profileDirectory}" --set "$generationDir" + ''; - 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 - ln --symbolic ${config.environment.path} $out/nix-on-droid-path + cp ${activationScript} $out/activate - 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.build.etc}/etc $out/etc + ln --symbolic ${config.environment.path} $out/nix-on-droid-path - ln --symbolic ${config.environment.binSh} $out/filesystem/bin/sh - ln --symbolic ${config.environment.usrBinEnv} $out/filesystem/usr/bin/env - ''; + 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.binSh} $out/filesystem/bin/sh + ln --symbolic ${config.environment.usrBinEnv} $out/filesystem/usr/bin/env + ''; + + profileDirectory = "/nix/var/nix/profiles/nix-on-droid"; + }; }; diff --git a/nix-on-droid/nix-on-droid.sh b/nix-on-droid/nix-on-droid.sh index 900c05a..9d57051 100644 --- a/nix-on-droid/nix-on-droid.sh +++ b/nix-on-droid/nix-on-droid.sh @@ -34,7 +34,9 @@ function doHelp() { } function doSwitch() { - local profileDirectory="/nix/var/nix/profiles/nix-on-droid" + if [[ -v VERBOSE ]]; then + PASSTHROUGH_OPTS+=(--show-trace) + fi echo "Building activation package..." nix build \ @@ -43,15 +45,13 @@ function doSwitch() { ${PASSTHROUGH_OPTS[*]} \ activationPackage - echo "Save profile activation package..." + echo "Run activation script..." generationDir="$(nix path-info \ --file "" \ ${PASSTHROUGH_OPTS[*]} \ activationPackage \ )" - nix-env --profile "${profileDirectory}" --set "${generationDir}" - echo "Run activation script..." "${generationDir}/activate" }