Overview

nasrepo automatically downloads .deb packages from builds.sr.ht and uses local-apt-repository to make them available via APT.

Architecture

Timer (daily 3 AM)
  ↓
pull-artifacts
  ↓
/srv/local-apt-repository/ (.deb files)
  ↓ (systemd path monitoring)
local-apt-repository (metadata generation)
  ↓
/var/lib/local-apt-repository/ (APT repository)
  ↓
apt install

Components

nasrepo package:

  • /usr/lib/nasrepo/pull-artifacts - Downloads from builds.sr.ht
  • /etc/nasrepo/.srht-token - OAuth token
  • nasrepo-update.timer - Daily automation (3 AM)
  • nasrepo-update.service - Runs pull-artifacts

local-apt-repository package:

  • Monitors /srv/local-apt-repository/ for new .deb files
  • Generates metadata in /var/lib/local-apt-repository/
  • Configures APT source automatically

Key Locations

  • Token: /etc/nasrepo/.srht-token
  • Downloads: /srv/local-apt-repository/ (input)
  • Repository: /var/lib/local-apt-repository/ (output)
  • APT source: /etc/apt/sources.list.d/local-apt-repository.list

Manual Operations

Download latest packages:

sudo /usr/lib/nasrepo/pull-artifacts nascoll /srv/local-apt-repository

Check timer status:

systemctl status nasrepo-update.timer

Enable automatic updates:

sudo systemctl enable --now nasrepo-update.timer

Flow

  1. Timer triggers daily (or manual run)
  2. pull-artifacts queries builds.sr.ht for latest successful build
  3. Downloads all-packages.tar.gz, extracts .debs to /srv/local-apt-repository/
  4. local-apt-repository.path detects new files
  5. local-apt-repository.service rebuilds metadata
  6. Packages immediately available via apt install