Probably should have committed a long time ago...
This commit is contained in:
@@ -0,0 +1,244 @@
|
||||
# Omarchy Repository
|
||||
|
||||
A custom Arch Linux repository for managing and distributing packages.
|
||||
|
||||
## Directory Structure
|
||||
|
||||
```
|
||||
omarchy-repo/
|
||||
├── x86_64/ # Repository packages and database
|
||||
├── src/ # AUR package build sources
|
||||
├── build/ # Docker build files
|
||||
├── bin/ # Management scripts
|
||||
└── packages # Package list
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. **Add packages to track:**
|
||||
- Edit `packages` file (system auto-detects if official or AUR)
|
||||
|
||||
2. **Build packages in Docker:**
|
||||
```bash
|
||||
./bin/build
|
||||
```
|
||||
|
||||
3. **Update repository database:**
|
||||
```bash
|
||||
./bin/update-repo
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Local Usage
|
||||
|
||||
Add this to `/etc/pacman.conf` (before other repositories for priority):
|
||||
|
||||
```ini
|
||||
[omarchy]
|
||||
SigLevel = Optional TrustAll
|
||||
Server = file:///home/ryan/Dev/omarchy-repo/x86_64
|
||||
```
|
||||
|
||||
### Remote Server Setup
|
||||
|
||||
To serve this repository over HTTP:
|
||||
|
||||
1. **Using Python (temporary):**
|
||||
```bash
|
||||
cd /home/ryan/Dev/omarchy-repo/x86_64
|
||||
python -m http.server 8080
|
||||
```
|
||||
|
||||
2. **Using nginx (permanent):**
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name repo.yourdomain.com;
|
||||
root /home/ryan/Dev/omarchy-repo/x86_64;
|
||||
autoindex on;
|
||||
}
|
||||
```
|
||||
|
||||
3. **Client configuration:**
|
||||
```ini
|
||||
[omarchy]
|
||||
SigLevel = Optional TrustAll
|
||||
Server = http://repo.yourdomain.com
|
||||
```
|
||||
|
||||
## Scripts Usage
|
||||
|
||||
### build
|
||||
|
||||
Builds all packages in Docker container (no local installation).
|
||||
|
||||
```bash
|
||||
# Build everything
|
||||
./bin/build
|
||||
|
||||
# Options:
|
||||
./bin/build --only "yay walker-bin" # Build specific packages
|
||||
./bin/build --skip-pgp # Skip PGP signature verification
|
||||
./bin/build --force # Force rebuild even if no updates
|
||||
./bin/build --keep-image # Keep Docker image after build
|
||||
```
|
||||
|
||||
### update-repo
|
||||
|
||||
Updates the repository database with all packages in x86_64/.
|
||||
|
||||
```bash
|
||||
# Update database
|
||||
./bin/update-repo
|
||||
|
||||
# Options:
|
||||
./bin/update-repo --verify # Only verify the database
|
||||
./bin/update-repo --sign # Sign database with GPG
|
||||
./bin/update-repo --stats # Show repository statistics
|
||||
```
|
||||
|
||||
### clean-repo
|
||||
|
||||
Maintains the repository by removing old packages.
|
||||
|
||||
```bash
|
||||
# Keep only latest 2 versions
|
||||
./bin/clean-repo
|
||||
|
||||
# Options:
|
||||
./bin/clean-repo --keep 3 # Keep 3 versions
|
||||
./bin/clean-repo --dry-run # Preview what would be removed
|
||||
./bin/clean-repo --all # Remove all packages (dangerous!)
|
||||
```
|
||||
|
||||
### sync-repo
|
||||
|
||||
Syncs repository to remote server.
|
||||
|
||||
```bash
|
||||
# Sync to configured remote
|
||||
./bin/sync-repo ./x86_64
|
||||
```
|
||||
|
||||
## ISO Integration
|
||||
|
||||
To include this repository in an Arch ISO:
|
||||
|
||||
1. Copy the entire `x86_64/` directory to the ISO
|
||||
2. Add the repository configuration to the ISO's `pacman.conf`
|
||||
3. The packages will be available during installation
|
||||
|
||||
## Package Management
|
||||
|
||||
### Adding Packages
|
||||
|
||||
1. Add package name to `packages.official` or `packages.aur`
|
||||
2. Run `./scripts/build-packages.sh`
|
||||
3. Run `./scripts/update-repo.sh`
|
||||
|
||||
### Removing Packages
|
||||
|
||||
1. Remove package name from the list files
|
||||
2. Delete the package file from `x86_64/`
|
||||
3. Run `./scripts/update-repo.sh`
|
||||
|
||||
### Updating Packages
|
||||
|
||||
Simply run the build script again - it will download/build the latest versions:
|
||||
|
||||
```bash
|
||||
./scripts/build-packages.sh
|
||||
./scripts/update-repo.sh
|
||||
```
|
||||
|
||||
## Security
|
||||
|
||||
### Package Signing (Optional)
|
||||
|
||||
1. **Create a GPG key:**
|
||||
```bash
|
||||
gpg --gen-key
|
||||
```
|
||||
|
||||
2. **Export public key:**
|
||||
```bash
|
||||
gpg --export --armor "Your Name" > omarchy-repo.key
|
||||
```
|
||||
|
||||
3. **Sign packages during build:**
|
||||
```bash
|
||||
./scripts/update-repo.sh --sign
|
||||
```
|
||||
|
||||
4. **Client configuration:**
|
||||
```ini
|
||||
[omarchy]
|
||||
SigLevel = Required
|
||||
Server = file:///home/ryan/Dev/omarchy-repo/x86_64
|
||||
```
|
||||
|
||||
## Maintenance
|
||||
|
||||
### Regular Updates
|
||||
|
||||
Create a systemd timer or cron job for automatic updates:
|
||||
|
||||
```bash
|
||||
# /etc/cron.daily/omarchy-repo-update
|
||||
#!/bin/bash
|
||||
cd /home/ryan/Dev/omarchy-repo
|
||||
./scripts/build-packages.sh
|
||||
./scripts/update-repo.sh
|
||||
./scripts/clean-repo.sh --keep 2
|
||||
```
|
||||
|
||||
### Backup
|
||||
|
||||
Important files to backup:
|
||||
- `packages.official`
|
||||
- `packages.aur`
|
||||
- `x86_64/*.pkg.tar.*`
|
||||
- GPG keys (if using signing)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **"No packages found"**
|
||||
- Run `./scripts/build-packages.sh` first
|
||||
|
||||
2. **AUR build failures**
|
||||
- Check build dependencies
|
||||
- Try manual mode: `./scripts/build-packages.sh --manual`
|
||||
|
||||
3. **Repository not recognized by pacman**
|
||||
- Ensure the repository is listed before other repos in `/etc/pacman.conf`
|
||||
- Run `sudo pacman -Sy` to sync databases
|
||||
|
||||
4. **Permission errors**
|
||||
- Some operations need sudo (downloading official packages)
|
||||
- Ensure scripts are executable: `chmod +x scripts/*.sh`
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
### Mirror Synchronization
|
||||
|
||||
To sync with another omarchy instance:
|
||||
|
||||
```bash
|
||||
rsync -av --delete \
|
||||
user@remote:/path/to/omarchy-repo/x86_64/ \
|
||||
/home/ryan/Dev/omarchy-repo/x86_64/
|
||||
```
|
||||
|
||||
### Custom Build Flags
|
||||
|
||||
For AUR packages, edit `/etc/makepkg.conf` to customize:
|
||||
- `CFLAGS` / `CXXFLAGS` for optimization
|
||||
- `MAKEFLAGS` for parallel compilation
|
||||
- `PACKAGER` for package attribution
|
||||
|
||||
## License
|
||||
|
||||
This repository structure and scripts are provided as-is for personal use.
|
||||
Reference in New Issue
Block a user