diff --git a/modules/environment/login/login.nix b/modules/environment/login/login.nix index 17c502f..a8d04a0 100644 --- a/modules/environment/login/login.nix +++ b/modules/environment/login/login.nix @@ -1,23 +1,45 @@ # Licensed under GNU Lesser General Public License v3 or later, see COPYING. # Copyright (c) 2019 Alexander Sosedkin and other contributors, see AUTHORS. -{ config, writeScript }: +{ config, lib, writeScript }: + +let + inherit (config.build) installationDir; +in writeScript "login" '' #!/system/bin/sh set -e export USER="${config.user.userName}" - export PROOT_TMP_DIR=${config.build.installationDir}/tmp - export PROOT_L2S_DIR=${config.build.installationDir}/.l2s + export PROOT_TMP_DIR=${installationDir}/tmp + export PROOT_L2S_DIR=${installationDir}/.l2s - exec "${config.build.installationDir}/bin/proot-static" \ - -b ${config.build.installationDir}/nix:/nix \ - -b ${config.build.installationDir}/bin:/bin \ - -b ${config.build.installationDir}/etc:/etc \ - -b ${config.build.installationDir}/tmp:/tmp \ - -b ${config.build.installationDir}/usr:/usr \ - -b /:/android \ - --link2symlink \ - ${config.build.installationDir}/bin/sh ${config.build.installationDir}/usr/lib/login-inner "$@" + ${ + if config.build.initialBuild + then '' + ${installationDir}/bin/proot-static \ + -b ${installationDir}/nix:/nix \ + -b ${installationDir}/bin:/bin \ + -b ${installationDir}/etc:/etc \ + -b ${installationDir}/tmp:/tmp \ + -b ${installationDir}/usr:/usr \ + -b /:/android \ + --link2symlink \ + ${installationDir}/bin/sh ${installationDir}/usr/lib/login-inner "$@" + + exec ${installationDir}/bin/login "$@" + '' + else '' + exec ${installationDir}/bin/proot-static \ + -b ${installationDir}/nix:/nix \ + -b ${installationDir}/bin:/bin \ + -b ${installationDir}/etc:/etc \ + -b ${installationDir}/tmp:/tmp \ + -b ${installationDir}/usr:/usr \ + -b /:/android \ + --link2symlink \ + ${installationDir}/bin/sh ${installationDir}/usr/lib/login-inner "$@" + '' + } ''