summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hosts/muhammed/configuration.nix1
-rw-r--r--hosts/muhammed/update-git-repos/default.nix23
2 files changed, 24 insertions, 0 deletions
diff --git a/hosts/muhammed/configuration.nix b/hosts/muhammed/configuration.nix
index d351ece..54fd36e 100644
--- a/hosts/muhammed/configuration.nix
+++ b/hosts/muhammed/configuration.nix
@@ -10,6 +10,7 @@
../../shared/nixos-and-darwin/common-hm-settings
./remote-builders
+ ./update-git-repos
];
# Avoid downloading the nixpkgs tarball every hour.
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.
+ };
+ };
+}