name: Update Nix Flake on: schedule: - cron: "30 0 * * *" # daily run workflow_dispatch: {} jobs: update-flake: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: token: "${{ gitea.token }}" fetch-depth: 0 ref: flake-updates - name: Git config shell: bash run: | git config user.name "Gitea Actions" git config user.email "actions@gitea.local" - name: Merge main branch shell: bash run: | commits_ahead=$(git rev-list --count HEAD..origin/main) echo "Commits ahead: $commits_ahead" git log --oneline -5 echo "----------" git log --oneline -5 origin/main if [ $commits_ahead -ne 0 ] then git fetch origin git merge --squash origin/main || true # do not exit script on merge conflict git push --force-with-lease # solve potential merge conflict by taking flake.lock from main git checkout origin/main -- flake.lock git commit -m "Merge main branch squashed $(date -I)" else echo "Merge not necessary" fi - name: Set up Nix uses: cachix/install-nix-action@v31 - name: Update Flake run: nix flake update - name: Commit and push changes shell: bash run: | git add flake.lock if git diff --quiet; then echo "No changes to commit." else git commit -m "Update flake.lock $(date -I)" git push origin flake-updates fi