Updated README with CI workflow details and native aarch64 support; remove obsolete test-setup.sh script
Update Cursor Version / update-cursor (push) Successful in 20s

This commit is contained in:
2025-12-24 20:28:12 -04:00
parent b62d3e3480
commit 9e18ec27f9
2 changed files with 11 additions and 124 deletions
+11 -14
View File
@@ -1,6 +1,8 @@
# Self-Updating Cursor Flake
A Nix flake that provides the Cursor code editor with automatic daily updates via GitHub Actions.
A Nix flake that provides the Cursor code editor with automatic daily updates via CI (GitHub Actions-compatible workflows, e.g. GitHub Actions or Gitea Actions).
This fork includes **native `aarch64-linux` (linux-arm64) support** in addition to `x86_64-linux`.
## Features
@@ -15,7 +17,7 @@ A Nix flake that provides the Cursor code editor with automatic daily updates vi
### Method 1: Direct Installation
```bash
# Install Cursor directly
nix profile install github:your-username/cursor-nixos-flake
nix profile install git+https://git.chiasson.cloud/Olivier/cursor-nixos-flake
# Run Cursor
cursor --version
@@ -24,7 +26,7 @@ cursor --version
### Method 2: Add to Your Flake
Add to your `flake.nix` inputs:
```nix
inputs.cursor.url = "github:your-username/cursor-nixos-flake";
inputs.cursor.url = "git+https://git.chiasson.cloud/Olivier/cursor-nixos-flake";
```
Then use in your configuration:
@@ -50,10 +52,10 @@ devShells.default = pkgs.mkShell {
### Method 3: Temporary Run
```bash
# Run without installing
nix run github:your-username/cursor-nixos-flake
nix run git+https://git.chiasson.cloud/Olivier/cursor-nixos-flake
# Build and run
nix build github:your-username/cursor-nixos-flake
nix build git+https://git.chiasson.cloud/Olivier/cursor-nixos-flake
./result/bin/cursor
```
@@ -64,9 +66,6 @@ To manually update Cursor to the latest version:
```bash
./update-cursor.sh
```
Note: on a fresh fork, `cursor-release.nix` may contain a placeholder aarch64 hash until you run the updater once (or trigger the GitHub Action via `workflow_dispatch`).
To update to a specific version:
```bash
@@ -76,11 +75,11 @@ To update to a specific version:
## How It Works
### Automatic Updates
The GitHub Actions workflow runs daily and:
The CI workflow in `.github/workflows/update-cursor.yml` runs daily and:
1. Checks Cursor's API for the latest version
2. Only updates if a new version is available
3. Downloads the AppImage and calculates SHA256 hash
4. Updates `cursor-release.nix` with the new version and per-architecture hashes
4. Updates `cursor-release.nix` with the new version and **per-architecture hashes** (`x86_64-linux` + `aarch64-linux`)
5. Tests the build and commits changes
6. Pushes the update back to the repository
@@ -93,14 +92,12 @@ The `update-cursor.sh` script provides:
## API Endpoints
- **AppImage Download**: `https://api2.cursor.sh/updates/download/golden/linux-x64/cursor/{version}`
- **x86_64 AppImage Download**: `https://api2.cursor.sh/updates/download/golden/linux-x64/cursor/{version}`
- **aarch64 AppImage Download**: `https://api2.cursor.sh/updates/download/golden/linux-arm64/cursor/{version}`
## Testing
```bash
# Test the complete setup
./test-setup.sh
# Test flake syntax
nix flake check
-110
View File
@@ -1,110 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
# Test script to verify the Cursor flake setup
echo "Testing Cursor Flake Setup"
echo "========================="
# Check if we're in the right directory
if [[ ! -f "flake.nix" ]]; then
echo "Error: flake.nix not found. Please run this script from the flake directory."
exit 1
fi
# Test 1: Check flake syntax
echo "1. Testing flake syntax..."
if command -v nix >/dev/null 2>&1; then
if nix flake check --no-build; then
echo " ✓ Flake syntax is valid"
else
echo " ✗ Flake syntax error"
exit 1
fi
else
echo " ⚠ Skipping flake check (nix not available)"
fi
# Test 2: Check update script
echo "2. Testing update script..."
if [[ -f "update-cursor.sh" && -x "update-cursor.sh" ]]; then
echo " ✓ Update script exists and is executable"
# Test script help
if ./update-cursor.sh --help 2>/dev/null || ./update-cursor.sh -h 2>/dev/null; then
echo " ✓ Update script help works"
else
echo " ⚠ Update script help not available (this is normal)"
fi
else
echo " ✗ Update script missing or not executable"
exit 1
fi
# Test 3: Check GitHub Actions workflow
echo "3. Testing GitHub Actions workflow..."
if [[ -f ".github/workflows/update-cursor.yml" ]]; then
echo " ✓ GitHub Actions workflow exists"
# Basic YAML syntax check
if command -v yamllint >/dev/null 2>&1; then
if yamllint .github/workflows/update-cursor.yml >/dev/null 2>&1; then
echo " ✓ Workflow YAML syntax is valid"
else
echo " ⚠ Workflow YAML syntax issues (yamllint not available or found issues)"
fi
else
echo " ⚠ Skipping YAML validation (yamllint not available)"
fi
else
echo " ✗ GitHub Actions workflow missing"
exit 1
fi
# Test 4: Check API connectivity
echo "4. Testing API connectivity..."
if command -v curl >/dev/null 2>&1; then
if curl -s --max-time 10 -I "https://api2.cursor.sh/updates/download/golden/linux-x64/cursor/latest" >/dev/null 2>&1; then
echo " ✓ Cursor API is accessible"
else
echo " ⚠ Cursor API not accessible (this might be temporary)"
fi
else
echo " ⚠ Skipping API test (curl not available)"
fi
# Test 5: Check current version
echo "5. Checking current version..."
if [[ -f "cursor-release.nix" ]]; then
CURRENT_VERSION=$(grep -o 'version = "[^"]*"' cursor-release.nix | head -1 | cut -d'"' -f2)
else
CURRENT_VERSION=$(grep -o 'version = "[^"]*"' flake.nix | head -1 | cut -d'"' -f2)
fi
echo " Current version: $CURRENT_VERSION"
# Test 6: Check if SHA256 is placeholder
echo "6. Checking SHA256 hash..."
if [[ -f "cursor-release.nix" ]]; then
CURRENT_SHA256=$(grep -o 'x86_64-linux = "[^"]*"' cursor-release.nix | head -1 | cut -d'"' -f2)
else
CURRENT_SHA256=$(grep -o 'sha256 = "[^"]*"' flake.nix | head -1 | cut -d'"' -f2)
fi
if [[ "$CURRENT_SHA256" == "0000000000000000000000000000000000000000000000000000" ]]; then
echo " ⚠ SHA256 is placeholder - needs to be updated"
else
echo " ✓ SHA256 appears to be set"
fi
echo ""
echo "Test Summary"
echo "============"
echo "Setup appears to be mostly correct!"
echo ""
echo "Next steps:"
echo "1. Run './update-cursor.sh' to get the correct SHA256 hash"
echo "2. Commit and push your changes to enable GitHub Actions"
echo "3. Check the Actions tab in GitHub to see if the workflow runs"
echo ""
echo "For manual testing:"
echo "- nix build .#cursor --dry-run"
echo "- nix run .#cursor --version"