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
Update Cursor Version / update-cursor (push) Successful in 20s
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
# Self-Updating Cursor Flake
|
# 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
|
## Features
|
||||||
|
|
||||||
@@ -15,7 +17,7 @@ A Nix flake that provides the Cursor code editor with automatic daily updates vi
|
|||||||
### Method 1: Direct Installation
|
### Method 1: Direct Installation
|
||||||
```bash
|
```bash
|
||||||
# Install Cursor directly
|
# 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
|
# Run Cursor
|
||||||
cursor --version
|
cursor --version
|
||||||
@@ -24,7 +26,7 @@ cursor --version
|
|||||||
### Method 2: Add to Your Flake
|
### Method 2: Add to Your Flake
|
||||||
Add to your `flake.nix` inputs:
|
Add to your `flake.nix` inputs:
|
||||||
```nix
|
```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:
|
Then use in your configuration:
|
||||||
@@ -50,10 +52,10 @@ devShells.default = pkgs.mkShell {
|
|||||||
### Method 3: Temporary Run
|
### Method 3: Temporary Run
|
||||||
```bash
|
```bash
|
||||||
# Run without installing
|
# 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
|
# 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
|
./result/bin/cursor
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -64,9 +66,6 @@ To manually update Cursor to the latest version:
|
|||||||
```bash
|
```bash
|
||||||
./update-cursor.sh
|
./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:
|
To update to a specific version:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -76,11 +75,11 @@ To update to a specific version:
|
|||||||
## How It Works
|
## How It Works
|
||||||
|
|
||||||
### Automatic Updates
|
### 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
|
1. Checks Cursor's API for the latest version
|
||||||
2. Only updates if a new version is available
|
2. Only updates if a new version is available
|
||||||
3. Downloads the AppImage and calculates SHA256 hash
|
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
|
5. Tests the build and commits changes
|
||||||
6. Pushes the update back to the repository
|
6. Pushes the update back to the repository
|
||||||
|
|
||||||
@@ -93,14 +92,12 @@ The `update-cursor.sh` script provides:
|
|||||||
|
|
||||||
## API Endpoints
|
## 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
|
## Testing
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Test the complete setup
|
|
||||||
./test-setup.sh
|
|
||||||
|
|
||||||
# Test flake syntax
|
# Test flake syntax
|
||||||
nix flake check
|
nix flake check
|
||||||
|
|
||||||
|
|||||||
-110
@@ -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"
|
|
||||||
Reference in New Issue
Block a user