mirror of
https://github.com/nix-community/home-manager
synced 2024-12-25 03:09: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);
|
(maybeSet "LC_TIME" cfg.language.time);
|
||||||
|
|
||||||
home.activation.linkages =
|
home.activation.linkGeneration =
|
||||||
let
|
let
|
||||||
link = pkgs.writeText "link" ''
|
link = pkgs.writeText "link" ''
|
||||||
newGenFiles="$1"
|
newGenFiles="$1"
|
||||||
|
@ -234,42 +234,6 @@ in
|
||||||
'';
|
'';
|
||||||
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() {
|
function linkNewGen() {
|
||||||
local newGenFiles
|
local newGenFiles
|
||||||
newGenFiles="$(readlink -e "$newGenPath/home-files")"
|
newGenFiles="$(readlink -e "$newGenPath/home-files")"
|
||||||
|
@ -324,13 +288,9 @@ in
|
||||||
sf = pkgs.writeText "activation-script" ''
|
sf = pkgs.writeText "activation-script" ''
|
||||||
#!${pkgs.stdenv.shell}
|
#!${pkgs.stdenv.shell}
|
||||||
|
|
||||||
if [[ $DRY_RUN ]] ; then
|
set -e
|
||||||
echo "Performing dry run"
|
|
||||||
export DRY_RUN_CMD=echo
|
${builtins.readFile ./activation-init.sh}
|
||||||
else
|
|
||||||
echo "Performing live run"
|
|
||||||
unset DRY_RUN_CMD
|
|
||||||
fi
|
|
||||||
|
|
||||||
${activationCmds}
|
${activationCmds}
|
||||||
'';
|
'';
|
||||||
|
|
|
@ -69,7 +69,7 @@ in
|
||||||
(buildServices "timer" config.systemd.user.timers)
|
(buildServices "timer" config.systemd.user.timers)
|
||||||
);
|
);
|
||||||
|
|
||||||
home.activation.reloadSystemD = stringAfter ["linkages"] ''
|
home.activation.reloadSystemD = ''
|
||||||
function systemdPostReload() {
|
function systemdPostReload() {
|
||||||
local servicesDiffFile="$(mktemp)"
|
local servicesDiffFile="$(mktemp)"
|
||||||
local oldUserServicePath="$oldGenPath/home-files/.config/systemd/user"
|
local oldUserServicePath="$oldGenPath/home-files/.config/systemd/user"
|
||||||
|
|
Loading…
Reference in a new issue