summaryrefslogtreecommitdiff
path: root/hosts/muhammed/update-git-repos
diff options
context:
space:
mode:
Diffstat (limited to 'hosts/muhammed/update-git-repos')
-rw-r--r--hosts/muhammed/update-git-repos/default.nix23
1 files changed, 23 insertions, 0 deletions
diff --git a/hosts/muhammed/update-git-repos/default.nix b/hosts/muhammed/update-git-repos/default.nix
new file mode 100644
index 0000000..673f86d
--- /dev/null
+++ b/hosts/muhammed/update-git-repos/default.nix
@@ -0,0 +1,23 @@
+{pkgs, ...}: {
+ launchd.agents."update-git-repos" = {
+ serviceConfig = {
+ ProgramArguments = let
+ script = pkgs.writeShellScript "update-git-repos" ''
+ printf '\x1b[1m=> Starting %s\x1b[0m\n' "$(basename "$0")"
+ find ~/Source ~/Projects -name '*.git' -print0 | while read -d $'\0' -r repo; do
+ printf '\x1b[1m=> Updating %s\x1b[0m\n' "$repo"
+ git -C "$repo" fetch --all
+ done
+ '';
+ in
+ # This *should* forward the scripts output to the universal logging system.
+ # I can't really figure it out and I kind of hate all of Apple's tooling.
+ ["/bin/sh" "-c" "${script} 2>&1 | logger -s"];
+
+ # Only run this service when network is available.
+ KeepAlive.NetworkState = true;
+
+ StartInterval = 3600; # Once an hour.
+ };
+ };
+}