home-manager: set profile path variables lazily

We only need the Home Manager path variables when performing a few
operations, so only set the variables for those operations.

This avoids problems on fresh installations, where no profile
directory exists.

Fixes #4403
This commit is contained in:
e-nikolov 2023-09-14 04:13:15 +02:00 committed by Robert Helgesson
parent f1b7775d23
commit ae896c810f
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89

View file

@ -648,6 +648,8 @@ function doSwitch() {
} }
function doListGens() { function doListGens() {
setHomeManagerPathVariables
# Whether to colorize the generations output. # Whether to colorize the generations output.
local color="never" local color="never"
if [[ ! -v NO_COLOR && -t 1 ]]; then if [[ ! -v NO_COLOR && -t 1 ]]; then
@ -665,6 +667,7 @@ function doListGens() {
# Removes linked generations. Takes as arguments identifiers of # Removes linked generations. Takes as arguments identifiers of
# generations to remove. # generations to remove.
function doRmGenerations() { function doRmGenerations() {
setHomeManagerPathVariables
setVerboseAndDryRun setVerboseAndDryRun
pushd "$HM_PROFILE_DIR" > /dev/null pushd "$HM_PROFILE_DIR" > /dev/null
@ -686,6 +689,8 @@ function doRmGenerations() {
} }
function doExpireGenerations() { function doExpireGenerations() {
setHomeManagerPathVariables
local generations local generations
generations="$( \ generations="$( \
find "$HM_PROFILE_DIR" -name 'home-manager-*-link' -not -newermt "$1" \ find "$HM_PROFILE_DIR" -name 'home-manager-*-link' -not -newermt "$1" \
@ -810,6 +815,7 @@ function doShowNews() {
} }
function doUninstall() { function doUninstall() {
setHomeManagerPathVariables
setVerboseAndDryRun setVerboseAndDryRun
setNixProfileCommands setNixProfileCommands
@ -945,8 +951,6 @@ COMMAND=""
COMMAND_ARGS=() COMMAND_ARGS=()
FLAKE_ARG="" FLAKE_ARG=""
setHomeManagerPathVariables
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
opt="$1" opt="$1"
shift shift