petersweb-infra/nixos/cloned_repos/default.nix

81 lines
1.9 KiB
Nix
Raw Normal View History

2024-11-15 22:00:01 -09:00
{
pullomatic,
pkgs,
lib,
...
}: let
domainToPath = domain: lib.concatStringsSep "_" domain;
domainToRepoName = domain: lib.concatStringsSep "-" domain;
makeConfigFile = domain: remoteUrl: branch: {
name = domainToRepoName domain;
text = ''
path: /etc/pullomatic/${domainToPath domain}
remote_url: ${remoteUrl}
remote_branch: ${branch}
interval:
interval: 10m
credentials:
2026-05-04 06:16:43 -08:00
username: git
2026-05-04 05:12:54 -08:00
private_key:
file: /root/.ssh/id_rsa.pem
2024-11-15 22:00:01 -09:00
'';
};
configFiles = [
(makeConfigFile
["com" "philippeterson"]
"git@github.com:philip-peterson/philippeterson.com.git"
"master")
(makeConfigFile
["com" "quinefoundation" "blog"]
"git@github.com:philip-peterson/blog.git"
"master")
2025-08-18 21:29:23 -08:00
(makeConfigFile
["com" "quineglobal"]
"git@github.com:philip-peterson/quineglobal-landing.git"
"main")
2024-11-15 22:00:01 -09:00
(makeConfigFile
["atcsim"]
"git@github.com:philip-peterson/ATC-Sim.git"
"master")
2025-05-05 18:09:26 -08:00
(makeConfigFile
["my-portfolio"]
"git@github.com:philip-peterson/my-portfolio.git"
"main")
2024-11-15 22:00:01 -09:00
];
configDir =
pkgs.runCommand "config-dir" {
buildInputs = [pkgs.coreutils];
} ''
mkdir -p $out
# Loop over the config files and write each one to $out
${lib.concatStringsSep "\n" (map (cf: ''
echo "${cf.text}" > $out/${cf.name}
chmod 0644 $out/${cf.name}
'')
configFiles)}
chmod -R 0750 $out
'';
in {
systemd.services.pullomatic = {
description = "Pull repositories with polling from a daemon";
serviceConfig = {
ExecStart = "${pullomatic} -c ${configDir}";
Restart = "always";
RestartSec = "0";
User = "root";
Group = "root";
};
};
systemd.tmpfiles.rules = [
"d /etc/pullomatic - root repo-data - -"
"Z /etc/pullomatic - root repo-data - -"
"Z /etc/pullomatic/* - root repo-data - -"
];
}