# Pacco
Pacco is an application for managing and hosting pacman repositories.

## Features
- Multiple repositories
- Multiple architectures
- Web UI for packages
- API for pushing new packages
- Smart mirroring

## Usage
### Package Repo
To use the packages pacco provides, add the following to `pacman.conf`:

```ini
# /etc/pacman.conf

[repo]
Server = https://example.com/pkg/$repo/$arch
```

### Add a new package
To upload a package you created with `makepkg` to a repo use curl:

```sh
curl -X POST \
-F "pkg=@./<pkg_name>-<version>-<rel>-<arch>.pkg.tar.zst" \
-F "sig=@./<pkg_name>-<version>-<rel>-<arch>.pkg.tar.zst.sig" \
"https://<domain>/pkg/<repo>/upload"
```

### Build with CI
You can add the following as a CI pipeline to automatically build and push a new package version.

```yml
when:
  - event: push
    branch: main

steps:
  - name: "PKGBUILD"
    image: git.hydrar.de/jmarya/pacco:latest
    commands:
      - pacco build --ci --push navos
    environment:
      PACCO_HOST: "https://pac.hydrar.de"
      PACCO_TOKEN:
        from_secret: pacco_token
      SIGN_KEY:
        from_secret: navos_key
```