1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-12-14 21:11:08 +01:00

git: support maintenance on darwin (#6868)

This commit is contained in:
Josh Heinrichs 2025-04-21 15:25:57 -06:00 committed by GitHub
parent 22b326b42b
commit 42d90297b3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 332 additions and 0 deletions

View file

@ -753,6 +753,54 @@ in
};
in
lib.attrsets.mapAttrs' toSystemdTimer cfg.maintenance.timers;
launchd.agents =
let
baseArguments = [
"${lib.getExe cfg.package}"
"for-each-repo"
"--keep-going"
"--config=maintenance.repo"
"maintenance"
"run"
];
in
{
"git-maintenance-hourly" = {
enable = true;
config = {
ProgramArguments = baseArguments ++ [ "--schedule=hourly" ];
StartCalendarInterval = map (hour: {
Hour = hour;
Minute = 53;
}) (lib.range 1 23);
};
};
"git-maintenance-daily" = {
enable = true;
config = {
ProgramArguments = baseArguments ++ [ "--schedule=daily" ];
StartCalendarInterval = map (weekday: {
Weekday = weekday;
Hour = 0;
Minute = 53;
}) (lib.range 1 6);
};
};
"git-maintenance-weekly" = {
enable = true;
config = {
ProgramArguments = baseArguments ++ [ "--schedule=weekly" ];
StartCalendarInterval = [
{
Weekday = 0;
Hour = 0;
Minute = 53;
}
];
};
};
};
})
(mkIf cfg.diff-highlight.enable {

View file

@ -8,4 +8,5 @@
git-without-signing-key-id = ./git-without-signing-key-id.nix;
git-without-signing = ./git-without-signing.nix;
git-with-hooks = ./git-with-hooks.nix;
git-with-maintenance = ./git-with-maintenance.nix;
}

View file

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.nix-community.home.git-maintenance-daily</string>
<key>ProgramArguments</key>
<array>
<string>@git@/bin/git</string>
<string>for-each-repo</string>
<string>--keep-going</string>
<string>--config=maintenance.repo</string>
<string>maintenance</string>
<string>run</string>
<string>--schedule=daily</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>53</integer>
<key>Weekday</key>
<integer>1</integer>
</dict>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>53</integer>
<key>Weekday</key>
<integer>2</integer>
</dict>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>53</integer>
<key>Weekday</key>
<integer>3</integer>
</dict>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>53</integer>
<key>Weekday</key>
<integer>4</integer>
</dict>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>53</integer>
<key>Weekday</key>
<integer>5</integer>
</dict>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>53</integer>
<key>Weekday</key>
<integer>6</integer>
</dict>
</array>
</dict>
</plist>

View file

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.nix-community.home.git-maintenance-hourly</string>
<key>ProgramArguments</key>
<array>
<string>@git@/bin/git</string>
<string>for-each-repo</string>
<string>--keep-going</string>
<string>--config=maintenance.repo</string>
<string>maintenance</string>
<string>run</string>
<string>--schedule=hourly</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>1</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>2</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>3</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>4</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>6</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>7</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>10</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>11</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>12</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>13</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>14</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>15</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>16</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>17</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>18</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>19</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>20</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>21</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>22</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
<dict>
<key>Hour</key>
<integer>23</integer>
<key>Minute</key>
<integer>53</integer>
</dict>
</array>
</dict>
</plist>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.nix-community.home.git-maintenance-weekly</string>
<key>ProgramArguments</key>
<array>
<string>@git@/bin/git</string>
<string>for-each-repo</string>
<string>--keep-going</string>
<string>--config=maintenance.repo</string>
<string>maintenance</string>
<string>run</string>
<string>--schedule=weekly</string>
</array>
<key>StartCalendarInterval</key>
<array>
<dict>
<key>Hour</key>
<integer>0</integer>
<key>Minute</key>
<integer>53</integer>
<key>Weekday</key>
<integer>0</integer>
</dict>
</array>
</dict>
</plist>

View file

@ -0,0 +1,26 @@
{ lib, pkgs, ... }:
lib.mkMerge [
{
programs.git = {
enable = true;
maintenance.enable = true;
};
}
(lib.mkIf pkgs.stdenv.isDarwin {
nmt.script = ''
serviceFile=LaunchAgents/org.nix-community.home.git-maintenance-hourly.plist
assertFileExists "$serviceFile"
assertFileContent "$serviceFile" ${./expected-agent-hourly.plist}
serviceFile=LaunchAgents/org.nix-community.home.git-maintenance-daily.plist
assertFileExists "$serviceFile"
assertFileContent "$serviceFile" ${./expected-agent-daily.plist}
serviceFile=LaunchAgents/org.nix-community.home.git-maintenance-weekly.plist
assertFileExists "$serviceFile"
assertFileContent "$serviceFile" ${./expected-agent-weekly.plist}
'';
})
]