@jaspermayone.com's dotfiles

dippet: add forks sync cron job

+46
+46
hosts/dippet/default.nix
··· 8 8 ... 9 9 }: 10 10 11 + let 12 + forks-sync = pkgs.writeShellScript "forks-sync" '' 13 + set -euo pipefail 14 + 15 + FORKS_DIR="/Users/jsp/forks" 16 + ORG="jaspermayone-forks" 17 + 18 + mkdir -p "$FORKS_DIR" 19 + cd "$FORKS_DIR" 20 + 21 + # Get list of repos from GitHub 22 + repos=$(${pkgs.gh}/bin/gh repo list "$ORG" --limit 1000 --json name -q '.[].name') 23 + 24 + for repo in $repos; do 25 + if [ -d "$repo" ]; then 26 + echo "Updating $repo..." 27 + cd "$repo" 28 + ${pkgs.git}/bin/git pull --ff-only || true 29 + cd .. 30 + else 31 + echo "Cloning $repo..." 32 + ${pkgs.gh}/bin/gh repo clone "$ORG/$repo" || true 33 + fi 34 + done 35 + 36 + echo "Sync complete: $(date)" 37 + ''; 38 + in 11 39 { 12 40 # Disable nix-darwin's Nix management (using Determinate Nix installer) 13 41 nix.enable = false; ··· 26 54 ]; 27 55 StandardOutPath = "/var/log/nix-darwin-upgrade.log"; 28 56 StandardErrorPath = "/var/log/nix-darwin-upgrade.log"; 57 + }; 58 + }; 59 + 60 + # Sync forks from jaspermayone-forks org hourly 61 + launchd.daemons.forks-sync = { 62 + script = '' 63 + ${forks-sync} 64 + ''; 65 + serviceConfig = { 66 + StartInterval = 3600; # Every hour 67 + StandardOutPath = "/var/log/forks-sync.log"; 68 + StandardErrorPath = "/var/log/forks-sync.log"; 69 + UserName = "jsp"; 70 + GroupName = "staff"; 71 + EnvironmentVariables = { 72 + HOME = "/Users/jsp"; 73 + PATH = "${pkgs.git}/bin:${pkgs.gh}/bin:/usr/bin:/bin"; 74 + }; 29 75 }; 30 76 }; 31 77