aboutsummaryrefslogtreecommitdiff
path: root/modules/systemd.nix
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2017-01-18 09:25:19 +0100
committerRobert Helgesson <robert@rycee.net>2017-01-18 09:27:28 +0100
commit550d0e81c96103ba90c6ea477270c5e2c7e9b711 (patch)
tree6bb793a2c3f5a63aff79263cdfa633301c6317cd /modules/systemd.nix
parent86217419e7085b501916db127b643136a7c915d6 (diff)
systemd: handle missing service directories
Before it suggested to restart a service `*.service`, which is quite silly.
Diffstat (limited to 'modules/systemd.nix')
-rw-r--r--modules/systemd.nix34
1 files changed, 30 insertions, 4 deletions
diff --git a/modules/systemd.nix b/modules/systemd.nix
index de3492308a9..c703ccb08b0 100644
--- a/modules/systemd.nix
+++ b/modules/systemd.nix
@@ -71,16 +71,42 @@ in
home.activation.reloadSystemD = ''
function systemdPostReload() {
- local servicesDiffFile="$(mktemp)"
+ local workDir
+ workDir="$(mktemp -d)"
+
local oldUserServicePath="$oldGenPath/home-files/.config/systemd/user"
local newUserServicePath="$newGenPath/home-files/.config/systemd/user"
+ local oldServiceFiles="$workDir/old-files"
+ local newServiceFiles="$workDir/new-files"
+ local servicesDiffFile="$workDir/diff-files"
+
+ if [[ ! -d "$oldUserServicePath" && ! -d "$newUserServicePath" ]]; then
+ return
+ fi
+
+ if [[ ! -d "$oldUserServicePath" ]]; then
+ touch "$oldServiceFiles"
+ else
+ find "$oldUserServicePath" \
+ -maxdepth 1 -name '*.service' -exec basename '{}' ';' \
+ | sort \
+ > "$oldServiceFiles"
+ fi
+
+ if [[ ! -d "$newUserServicePath" ]]; then
+ touch "$newServiceFiles"
+ else
+ find "$newUserServicePath" \
+ -maxdepth 1 -name '*.service' -exec basename '{}' ';' \
+ | sort \
+ > "$newServiceFiles"
+ fi
diff \
--new-line-format='+%L' \
--old-line-format='-%L' \
--unchanged-line-format=' %L' \
- <(basename -a $(echo "$oldUserServicePath/"*.service) | sort) \
- <(basename -a $(echo "$newUserServicePath/"*.service) | sort) \
+ "$oldServiceFiles" "$newServiceFiles" \
> $servicesDiffFile
local -a maybeRestart=( $(grep '^ ' $servicesDiffFile | cut -c2-) )
@@ -98,7 +124,7 @@ in
fi
done
- rm $servicesDiffFile
+ rm -r $workDir
local sugg=""