mirror of
https://github.com/nix-community/home-manager
synced 2024-12-23 18:29:47 +01:00
Add initial section of activation script
The initial section creates some useful variables for use by later activation sections.
This commit is contained in:
parent
8ce389ce2a
commit
f35b9a9970
3 changed files with 51 additions and 45 deletions
46
modules/activation-init.sh
Executable file
46
modules/activation-init.sh
Executable file
|
@ -0,0 +1,46 @@
|
|||
function setupVars() {
|
||||
local profilesPath="/nix/var/nix/profiles/per-user/$USER"
|
||||
local gcPath="/nix/var/nix/gcroots/per-user/$USER"
|
||||
local greatestGenNum
|
||||
|
||||
greatestGenNum=$( \
|
||||
find "$profilesPath" -name 'home-manager-*-link' \
|
||||
| sed 's/^.*-\([0-9]*\)-link$/\1/' \
|
||||
| sort -rn \
|
||||
| head -1)
|
||||
|
||||
if [[ -n "$greatestGenNum" ]] ; then
|
||||
oldGenNum=$greatestGenNum
|
||||
newGenNum=$((oldGenNum + 1))
|
||||
else
|
||||
newGenNum=1
|
||||
fi
|
||||
|
||||
if [[ -e "$gcPath/current-home" ]] ; then
|
||||
oldGenPath="$(readlink -e "$gcPath/current-home")"
|
||||
fi
|
||||
|
||||
newGenPath="@GENERATION_DIR@";
|
||||
newGenProfilePath="$profilesPath/home-manager-$newGenNum-link"
|
||||
newGenGcPath="$gcPath/current-home"
|
||||
}
|
||||
|
||||
setupVars
|
||||
|
||||
echo "Starting home manager activation"
|
||||
|
||||
if [[ $DRY_RUN ]] ; then
|
||||
echo "This is a dry run"
|
||||
export DRY_RUN_CMD=echo
|
||||
else
|
||||
echo "This is a live run"
|
||||
unset DRY_RUN_CMD
|
||||
fi
|
||||
|
||||
echo "Activation variables:"
|
||||
echo " oldGenNum=$oldGenNum"
|
||||
echo " newGenNum=$newGenNum"
|
||||
echo " oldGenPath=$oldGenPath"
|
||||
echo " newGenPath=$newGenPath"
|
||||
echo " newGenProfilePath=$newGenProfilePath"
|
||||
echo " newGenGcPath=$newGenGcPath"
|
|
@ -202,7 +202,7 @@ in
|
|||
//
|
||||
(maybeSet "LC_TIME" cfg.language.time);
|
||||
|
||||
home.activation.linkages =
|
||||
home.activation.linkGeneration =
|
||||
let
|
||||
link = pkgs.writeText "link" ''
|
||||
newGenFiles="$1"
|
||||
|
@ -234,42 +234,6 @@ in
|
|||
'';
|
||||
in
|
||||
''
|
||||
function setupVars() {
|
||||
local profilesPath="/nix/var/nix/profiles/per-user/$(whoami)"
|
||||
local gcPath="/nix/var/nix/gcroots/per-user/$(whoami)"
|
||||
local greatestGenNum=( \
|
||||
$(find "$profilesPath" -name 'home-manager-*-link' \
|
||||
| sed 's/^.*-\([0-9]*\)-link$/\1/' \
|
||||
| sort -rn \
|
||||
| head -1) \
|
||||
)
|
||||
|
||||
if [[ -n "$greatestGenNum" ]] ; then
|
||||
oldGenNum=$greatestGenNum
|
||||
newGenNum=$(($oldGenNum + 1))
|
||||
else
|
||||
newGenNum=1
|
||||
fi
|
||||
|
||||
if [[ -e "$gcPath/current-home" ]] ; then
|
||||
oldGenPath="$(readlink -e "$gcPath/current-home")"
|
||||
fi
|
||||
|
||||
newGenPath="@GENERATION_DIR@";
|
||||
newGenProfilePath="$profilesPath/home-manager-$newGenNum-link"
|
||||
newGenGcPath="$gcPath/current-home"
|
||||
}
|
||||
|
||||
# Set some vars, these can be used later on as well.
|
||||
setupVars
|
||||
|
||||
echo oldGenNum=$oldGenNum
|
||||
echo newGenNum=$newGenNum
|
||||
echo oldGenPath=$oldGenPath
|
||||
echo newGenPath=$newGenPath
|
||||
echo newGenProfilePath=$newGenProfilePath
|
||||
echo newGenGcPath=$newGenGcPath
|
||||
|
||||
function linkNewGen() {
|
||||
local newGenFiles
|
||||
newGenFiles="$(readlink -e "$newGenPath/home-files")"
|
||||
|
@ -324,13 +288,9 @@ in
|
|||
sf = pkgs.writeText "activation-script" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
|
||||
if [[ $DRY_RUN ]] ; then
|
||||
echo "Performing dry run"
|
||||
export DRY_RUN_CMD=echo
|
||||
else
|
||||
echo "Performing live run"
|
||||
unset DRY_RUN_CMD
|
||||
fi
|
||||
set -e
|
||||
|
||||
${builtins.readFile ./activation-init.sh}
|
||||
|
||||
${activationCmds}
|
||||
'';
|
||||
|
|
|
@ -69,7 +69,7 @@ in
|
|||
(buildServices "timer" config.systemd.user.timers)
|
||||
);
|
||||
|
||||
home.activation.reloadSystemD = stringAfter ["linkages"] ''
|
||||
home.activation.reloadSystemD = ''
|
||||
function systemdPostReload() {
|
||||
local servicesDiffFile="$(mktemp)"
|
||||
local oldUserServicePath="$oldGenPath/home-files/.config/systemd/user"
|
||||
|
|
Loading…
Reference in a new issue