Files
omarchy-pkgs/README.md
T

245 lines
5.0 KiB
Markdown

# 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.