{lib, config, pkgs, ... }: with lib; let cfg = config.services.auto-pr; in { options.services.auto-pr = { enable = mkEnableOption "Cron job PR mise à jour automatique"; }; config = mkIf cfg.enable { systemd.services.auto-pr-bot = { description = "Création d'un PR si mise à jour"; requires = ["network-online.target"]; environment = { HOME = "/var/lib/auto-pr-bot"; }; serviceConfig = { DynamicUser = true; CacheDirectory = "auto-pr-bot"; StateDirectory = "auto-pr-bot"; Type = "oneshot"; ExecStart = with pkgs; let env = python3Packages.python.buildEnv.override { extraLibs = [ python3Packages.PyGithub python3Packages.pyjwt python3Packages.colorama ]; ignoreCollisions = true; }; in "${pkgs.writeShellScriptBin "run.sh" '' ${env}/bin/python ${pkgs.writeScript "pr-autobot.py" "${readFile ./pr-autobot.py}"} --private-key /var/lib/auto-pr-bot/private-key.pem --app-id 19565 --installation-id 407088 --repo nyanloutre/nixpkgs --cache-dir /var/cache/auto-pr-bot ''}/bin/run.sh"; }; }; systemd.timers.auto-pr-bot = { description = "Timer auto PR bot"; requires = ["network-online.target"]; wantedBy = ["multi-user.target"]; timerConfig = { OnCalendar = "daily"; Unit = "auto-pr-bot.service"; }; }; }; }