nix-conf/nixos-modules/repo-sync/default.nix

52 lines
1.3 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
cfg = config.jopejoe1.repo-sync;
in
{
options.jopejoe1.repo-sync = {
enable = lib.mkEnableOption "Enable Repo Sync";
};
config = lib.mkIf cfg.enable {
systemd.timers."repo-sync" = {
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "5m";
OnUnitActiveSec = "15m";
Unit = "repo-sync.service";
};
};
systemd.services."repo-sync" = {
script = ''
git clone git@codeberg.org:jopejoe1/nix-conf.git /var/lib/repo-sync
git -C /var/lib/repo-sync remote add github git@github.com:jopejoe1/nix-conf.git
git -C /var/lib/repo-sync remote add gitlab git@gitlab.com:jopejoe1/nix-conf.git
git -C /var/lib/repo-sync pull -r github main
git -C /var/lib/repo-sync pull -r gitlab main
nix flake update /var/lib/repo-sync
git -C /var/lib/repo-sync commit -m "flack.lock updated on `$(date)`"
git -C /var/lib/repo-sync push origin
git -C /var/lib/repo-sync push github
git -C /var/lib/repo-sync push gitlab
rm -r /var/lib/repo-sync
'';
path = [
pkgs.openssh
pkgs.git
pkgs.coreutils
pkgs.nix
];
serviceConfig = {
Type = "oneshot";
User = "root";
};
};
};
}