{ pkgs, ... }:
let
  build-flake-script = pkgs.writeShellApplication {
    name = "build-flake-script";
    runtimeInputs = with pkgs; [
      git
      nix
      nixos-rebuild
      jq
    ];
    text = ''
      cd /root/nixos-servers
      git pull
      echo "Starting nixos-servers builds"
      for host in $(nix flake show --json| jq -r '.nixosConfigurations | keys[]'); do
        echo "Building $host"
        nixos-rebuild --verbose -L --flake ".#$host" build
      done
      echo "All nixos-servers builds complete"

      echo "Building gunter"
      cd /root/nixos
      git pull
      nixos-rebuild --verbose -L --flake ".#gunter" build
    '';
  };
in
{
  systemd.services."build-flakes" = {
    serviceConfig = {
      Type = "exec";
      ExecStart = "${build-flake-script}/bin/build-flake-script";
    };
  };
  systemd.timers."build-flakes" = {
    enable = true;
    wantedBy = [ "timers.target" ];
    timerConfig = {
      OnCalendar = "*-*-* *:30:00";
    };
  };
}