From fa847bdcda6ba7146192f941dbca5d18281ddf54 Mon Sep 17 00:00:00 2001 From: "thomas g. lopes" Date: Mon, 9 Mar 2026 15:32:03 +0000 Subject: [PATCH] local zen browser pkg --- .gitea/workflows/zen-browser-update.yml | 113 ++++++++++++++++++++++++ flake.lock | 23 +---- flake.nix | 6 -- modules/browsers.nix | 2 +- modules/pkgs/zen-browser.nix | 28 ++++++ 5 files changed, 143 insertions(+), 29 deletions(-) create mode 100644 .gitea/workflows/zen-browser-update.yml create mode 100644 modules/pkgs/zen-browser.nix diff --git a/.gitea/workflows/zen-browser-update.yml b/.gitea/workflows/zen-browser-update.yml new file mode 100644 index 0000000..384dc6b --- /dev/null +++ b/.gitea/workflows/zen-browser-update.yml @@ -0,0 +1,113 @@ +name: zen browser update + +on: + schedule: + - cron: "20 6 * * *" + workflow_dispatch: + +jobs: + update-zen-browser: + runs-on: ubuntu-latest + steps: + - name: checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: check latest zen browser release and update file + id: update + shell: bash + run: | + set -euo pipefail + + FILE="modules/pkgs/zen-browser.nix" + + current_version=$(python - <<'PY' + import re + s=open('modules/pkgs/zen-browser.nix').read() + m=re.search(r'version\s*=\s*"([^"]+)";', s) + print(m.group(1) if m else "") + PY + ) + + latest_version=$(python - <<'PY' + import json, urllib.request + url='https://api.github.com/repos/zen-browser/desktop/releases/latest' + with urllib.request.urlopen(url) as r: + data=json.load(r) + print(data.get('tag_name','').lstrip('v')) + PY + ) + + echo "current=$current_version" + echo "latest=$latest_version" + + if [ -z "$latest_version" ] || [ "$latest_version" = "$current_version" ]; then + echo "updated=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + url="https://github.com/zen-browser/desktop/releases/download/${latest_version}/zen-x86_64.AppImage" + new_hash=$(nix store prefetch-file --json "$url" | python -c 'import json,sys; print(json.load(sys.stdin)["hash"])') + + python - <> "$GITHUB_OUTPUT" + echo "version=$latest_version" >> "$GITHUB_OUTPUT" + + - name: create branch and commit + if: steps.update.outputs.updated == 'true' + shell: bash + run: | + set -euo pipefail + branch="bot/zen-browser-${{ steps.update.outputs.version }}" + + git config user.name "gitea actions" + git config user.email "actions@localhost" + + git checkout -B "$branch" + git add modules/pkgs/zen-browser.nix + git commit -m "update zen browser to ${{ steps.update.outputs.version }}" + git push --force origin "$branch" + + - name: open pull request + if: steps.update.outputs.updated == 'true' + env: + GITEA_TOKEN: ${{ gitea.token }} + shell: bash + run: | + set -euo pipefail + + api="${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}" + branch="bot/zen-browser-${{ steps.update.outputs.version }}" + + existing=$(curl -fsS \ + -H "Authorization: token ${GITEA_TOKEN}" \ + "${api}/pulls?state=open" \ + | python -c 'import json,sys; d=json.load(sys.stdin); b="'"$branch"'"; print(next((str(pr["number"]) for pr in d if pr.get("head",{}).get("ref")==b), ""))') + + if [ -n "$existing" ]; then + echo "PR already exists: #$existing" + exit 0 + fi + + curl -fsS -X POST \ + -H "Authorization: token ${GITEA_TOKEN}" \ + -H "Content-Type: application/json" \ + "${api}/pulls" \ + -d "$(cat <