mirror of
https://github.com/nix-community/home-manager.git
synced 2025-12-15 05:21:06 +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
|
in
|
||||||
lib.attrsets.mapAttrs' toSystemdTimer cfg.maintenance.timers;
|
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 {
|
(mkIf cfg.diff-highlight.enable {
|
||||||
|
|
|
||||||
|
|
@ -8,4 +8,5 @@
|
||||||
git-without-signing-key-id = ./git-without-signing-key-id.nix;
|
git-without-signing-key-id = ./git-without-signing-key-id.nix;
|
||||||
git-without-signing = ./git-without-signing.nix;
|
git-without-signing = ./git-without-signing.nix;
|
||||||
git-with-hooks = ./git-with-hooks.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