120 lines
2.8 KiB
Markdown
120 lines
2.8 KiB
Markdown
# Self-Updating Cursor Flake
|
|
|
|
A Nix flake that provides the Cursor code editor with automatic daily updates via GitHub Actions.
|
|
|
|
## Features
|
|
|
|
- 🚀 **Self-updating**: Automatically checks for new Cursor versions daily
|
|
- 🔧 **Manual updates**: Local script for immediate updates
|
|
- 🛡️ **Robust**: Proper error handling and fallbacks
|
|
- 📦 **AppImage-based**: Uses Cursor's official AppImage for maximum compatibility
|
|
- 🎯 **Linux x86_64 + aarch64**: Supports both AMD64 and ARM64 (aarch64) Linux
|
|
|
|
## Quick Start
|
|
|
|
### Method 1: Direct Installation
|
|
```bash
|
|
# Install Cursor directly
|
|
nix profile install github:your-username/cursor-nixos-flake
|
|
|
|
# Run Cursor
|
|
cursor --version
|
|
```
|
|
|
|
### Method 2: Add to Your Flake
|
|
Add to your `flake.nix` inputs:
|
|
```nix
|
|
inputs.cursor.url = "github:your-username/cursor-nixos-flake";
|
|
```
|
|
|
|
Then use in your configuration:
|
|
```nix
|
|
# For NixOS system configuration
|
|
environment.systemPackages = with pkgs; [
|
|
cursor.packages.${pkgs.system}.cursor
|
|
];
|
|
|
|
# For home-manager
|
|
home.packages = with pkgs; [
|
|
cursor.packages.${pkgs.system}.cursor
|
|
];
|
|
|
|
# For devShell
|
|
devShells.default = pkgs.mkShell {
|
|
packages = with pkgs; [
|
|
cursor.packages.${pkgs.system}.cursor
|
|
];
|
|
};
|
|
```
|
|
|
|
### Method 3: Temporary Run
|
|
```bash
|
|
# Run without installing
|
|
nix run github:your-username/cursor-nixos-flake
|
|
|
|
# Build and run
|
|
nix build github:your-username/cursor-nixos-flake
|
|
./result/bin/cursor
|
|
```
|
|
|
|
## Manual Update
|
|
|
|
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
|
|
./update-cursor.sh 1.8.0
|
|
```
|
|
|
|
## How It Works
|
|
|
|
### Automatic Updates
|
|
The GitHub Actions workflow 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
|
|
5. Tests the build and commits changes
|
|
6. Pushes the update back to the repository
|
|
|
|
### Manual Updates
|
|
The `update-cursor.sh` script provides:
|
|
- Version checking and comparison
|
|
- Safe updates with backups
|
|
- Build validation
|
|
- Interactive confirmation prompts
|
|
|
|
## API Endpoints
|
|
|
|
- **AppImage Download**: `https://api2.cursor.sh/updates/download/golden/linux-x64/cursor/{version}`
|
|
|
|
## Testing
|
|
|
|
```bash
|
|
# Test the complete setup
|
|
./test-setup.sh
|
|
|
|
# Test flake syntax
|
|
nix flake check
|
|
|
|
# Test building
|
|
nix build '.#cursor' --dry-run
|
|
```
|
|
|
|
## Development
|
|
|
|
### Customization
|
|
- **Update frequency**: Modify cron schedule in `.github/workflows/update-cursor.yml`
|
|
- **API endpoints**: Update URLs in workflow and update script
|
|
- **Build options**: Modify the `buildCursor` function in `flake.nix`
|
|
|
|
## License
|
|
|
|
MIT License - see [LICENSE](LICENSE) file for details. |