--- name: 'Flake Input Updater' inputs: base: default: 'main' required: false name: default: 'flake bump bot' required: true email: default: 'bot@nix.flake' required: true title: default: '[bot]: flake bump' required: true runs: using: "composite" steps: - name: "Configure git" shell: bash run: | git config user.name "${{ inputs.name }}" >> $GITHUB_OUTPUT git config user.email "${{ inputs.email }}" >> $GITHUB_OUTPUT - name: "Create branch" id: clone shell: bash run: | git fetch --all BRANCH="flake-update-$(date +%s)" git checkout -b "$BRANCH" echo branch=$BRANCH >> $GITHUB_OUTPUT - name: "Check for updates" shell: bash run: | nix flake update if git status --porcelain; then echo change=true >> $GITHUB_OUTPUT else echo change=false >> $GITHUB_OUTPUT fi - name: "Push + create PR" shell: bash id: push if: steps.git.outputs.change == 'true' run: | git add flake.lock git commit -m "${{ inputs.title }}" git push --force-with-lease origin "${{ steps.git.outputs.clone.branch }}" RESPONSE=$(curl -X 'POST' \ "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/pulls" \ -H 'accept: application/json' \ -H "Authorization: token $GITHUB_TOKEN" \ -H 'Content-type: application/json' \ -d "{ "base": "${{ inputs.base }}", "head": "${{ steps.git.outputs.clone.branch }}", "title": "automated flake update" }") NUMBER=$(echo $RESPONSE | jq -r '.number') echo "Created PR $NUMBER." echo NUMBER=$NUMBER >> $GITHUB_OUTPUT - name: "Set automerge on PR" shell: bash if: steps.git.outputs.change == 'true' && steps.commit.outputs.number != 'null' run: | RESPONSE=$(curl -X 'POST' \ "$GITHUB_SERVER_URL/api/v1/repos/$GITHUB_REPOSITORY/pulls/${{ steps.push.outputs.number }}/merge" \ -H 'accept: application/json' \ -H "Authorization: token $GITHUB_TOKEN" \ -H 'Content-Type: application/json' \ -d '{ "Do": "merge", "merge_when_checks_succeed": true, "delete_branch_after_merge": true }') echo $RESPONSE