diff --git a/machines/oracles/automation.nix b/machines/oracles/automation.nix new file mode 100644 index 0000000..585cde9 --- /dev/null +++ b/machines/oracles/automation.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, inputs, ... }: +let + repo-updater = pkgs.writeShellScriptBin "repo-updater" + (builtins.readFile ../../scripts/gitea/update-repo.sh); +in { + # Automate updating rust utility flake + systemd.services."rust-util-update" = { + environment = { XDG_RUNTIME_DIR = "/tmp"; }; + path = with pkgs; [ + git + inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.nurl + jq + curl + openssh + ]; + serviceConfig = { + ExecStart = + "${repo-updater}/bin/repo-updater gitea@git.stranger.systems:nix/Rust.git trunk"; + Type = "oneshot"; + User = "nathan"; + }; + }; +} diff --git a/machines/oracles/configuration.nix b/machines/oracles/configuration.nix index 9642772..4f7c6bc 100644 --- a/machines/oracles/configuration.nix +++ b/machines/oracles/configuration.nix @@ -1,6 +1,7 @@ { config, lib, pkgs, inputs, ... }: { + imports = [ ./automation.nix ]; # Sops setup for this machine sops.secrets = { "borg-ssh-key" = { diff --git a/scripts/gitea/update-repo.sh b/scripts/gitea/update-repo.sh new file mode 100755 index 0000000..3a77ff1 --- /dev/null +++ b/scripts/gitea/update-repo.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +set -eou pipefail + +TEMP_DIR=$(mktemp -d "repo-updater.XXXX" -p $XDG_RUNTIME_DIR) +pushd $TEMP_DIR + +git clone "$1" repo +pushd repo +git switch $2 + +./update.sh + +git add -A +if git commit -m "Update flake/dependencies"; then + git push -u origin $2 +else + echo "No changes made" +fi + +popd +popd +rm -rf $TEMP_DIR