- Use DeterminateSystems/nix-installer-action for Nix installation - Use DeterminateSystems/magic-nix-cache-action for caching (free, no setup) - Update documentation to remove Cachix references - Add nix branch to CI triggers
3.9 KiB
Nix Distribution - Ready to Use!
Current Status: WORKS NOW
Your Nix package is already distributable! Users can run it directly from GitHub without any additional setup on your end.
How Users Will Use It
Simple: Just Run From GitHub
nix run --extra-experimental-features 'nix-command flakes' github:RayLabsHQ/gitea-mirror
That's it! No releases, no CI, no infrastructure needed. It works right now.
What Happens When They Run This?
- Nix fetches your repo from GitHub
- Nix reads
flake.nixandflake.lock - Nix builds the package on their machine
- Nix runs the application
- Result cached in
/nix/storefor reuse
Do You Need CI or Releases?
For Basic Usage: NO
Users can already use it from GitHub. No CI or releases required.
For CI Validation: Already Set Up
GitHub Actions validates builds on every push with Magic Nix Cache (free, no setup).
Next Steps (Optional)
Option 1: Release Versioning (2 minutes)
Why: Users can pin to specific versions
How:
# When ready to release
git tag v3.8.11
git push origin v3.8.11
# Users can then pin to this version
nix run github:RayLabsHQ/gitea-mirror/v3.8.11
No additional CI needed - tags work automatically with flakes!
Option 2: Submit to nixpkgs (Long Term)
Why: Maximum discoverability and trust
When: After package is stable and well-tested
How: Submit PR to https://github.com/NixOS/nixpkgs
Files Created
Essential (Already Working)
flake.nix- Package definitionflake.lock- Dependency lock file.envrc- direnv integration
Documentation
NIX.md- Quick reference for usersdocs/NIX_DEPLOYMENT.md- Complete deployment guidedocs/NIX_DISTRIBUTION.md- Distribution guide for you (maintainer)README.md- Updated with Nix instructions
CI (Already Set Up)
.github/workflows/nix-build.yml- Builds and validates on Linux + macOS
Updated
.gitignore- Added Nix artifacts
Comparison: Your Distribution Options
| Setup | Time | User Experience | What You Need |
|---|---|---|---|
| Direct GitHub | 0 min | Slow (build from source) | Nothing! Works now |
| + Git Tags | 2 min | Versionable | Just push tags |
| + nixpkgs | Hours | Official/Trusted | PR review process |
Recommendation: Direct GitHub works now. Add git tags for versioning. Consider nixpkgs submission once stable.
Testing Your Distribution
You can test it right now:
# Test direct GitHub usage
nix run --extra-experimental-features 'nix-command flakes' github:RayLabsHQ/gitea-mirror
# Test with specific commit
nix run github:RayLabsHQ/gitea-mirror/$(git rev-parse HEAD)
# Validate flake
nix flake check
User Documentation Locations
Users will find instructions in:
- README.md - Installation section (already updated)
- NIX.md - Quick reference
- docs/NIX_DEPLOYMENT.md - Detailed guide
All docs include the correct commands with experimental features flags.
When to Release New Versions
For Git Tag Releases:
# 1. Update version in package.json
vim package.json
# 2. Update version in flake.nix (line 17)
vim flake.nix # version = "3.8.12";
# 3. Commit and tag
git add package.json flake.nix
git commit -m "chore: bump version to v3.8.12"
git tag v3.8.12
git push origin main
git push origin v3.8.12
Users can then use: nix run github:RayLabsHQ/gitea-mirror/v3.8.12
No Release Needed For:
- Bug fixes
- Small changes
- Continuous updates
Users can always use latest from main: nix run github:RayLabsHQ/gitea-mirror
Summary
Ready to distribute RIGHT NOW
- Just commit and push your
flake.nix - Users can run directly from GitHub
- CI validates builds automatically
Optional: Submit to nixpkgs
- Maximum discoverability
- Official Nix repository
- Do this once package is stable
See docs/NIX_DISTRIBUTION.md for complete details!