Add initial section of activation script

The initial section creates some useful variables for use by later
activation sections.
This commit is contained in:
Robert Helgesson 2017-01-16 20:26:42 +01:00
parent 8ce389ce2a
commit f35b9a9970
No known key found for this signature in database
GPG key ID: C3DB11069E65DC86
3 changed files with 51 additions and 45 deletions

46
modules/activation-init.sh Executable file
View 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"

View file

@ -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}
''; '';

View file

@ -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"