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:
parent
22b326b42b
commit
42d90297b3
6 changed files with 332 additions and 0 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
69
tests/modules/programs/git/expected-agent-daily.plist
Normal file
69
tests/modules/programs/git/expected-agent-daily.plist
Normal 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>
|
||||
159
tests/modules/programs/git/expected-agent-hourly.plist
Normal file
159
tests/modules/programs/git/expected-agent-hourly.plist
Normal 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>
|
||||
29
tests/modules/programs/git/expected-agent-weekly.plist
Normal file
29
tests/modules/programs/git/expected-agent-weekly.plist
Normal 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>
|
||||
26
tests/modules/programs/git/git-with-maintenance.nix
Normal file
26
tests/modules/programs/git/git-with-maintenance.nix
Normal 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}
|
||||
'';
|
||||
})
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue