Initial format

This commit is contained in:
Philip Peterson 2026-09-26 01:04:59 -08:00
parent f35959099f
commit 477793d581
8 changed files with 34 additions and 28 deletions

7
Containerfile Normal file
View file

@ -0,0 +1,7 @@
FROM ghcr.io/ublue-os/aurora:stable
COPY overlay/ /
# System-level units are enabled explicitly. User units are picked up
# automatically via overlay/usr/lib/systemd/user-preset/.
RUN systemctl enable rpm-ostree-cleanup.timer

View file

@ -2,49 +2,47 @@
Quine distro of Linux based on uBlue Aurora
## systemd/user/disk-cleanup.{service,timer}
## Building
Weekly, runs as the user, no privilege needed: `podman system prune -af`,
`flatpak uninstall --unused -y`, clears `~/.cache`.
`Containerfile` builds a custom bootc image on top of `ghcr.io/ublue-os/aurora:stable`,
layering in everything under `overlay/`:
```sh
cp systemd/user/disk-cleanup.* ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now disk-cleanup.timer
podman build -t quine-linux -f Containerfile .
```
## systemd/system/rpm-ostree-cleanup.{service,timer}
Weekly, runs as root via systemd (not cron/sudoers): `rpm-ostree cleanup -rb`
(drops rollback deployment and any pending deployment).
```sh
sudo cp systemd/system/rpm-ostree-cleanup.* /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now rpm-ostree-cleanup.timer
```
An ISO can then be generated from the built image with `bootc-image-builder`.
## overlay/
Files here mirror their path on the root filesystem, meant to be baked into
the image (e.g. `COPY overlay/ /` in a future Containerfile). Until then,
apply manually:
Files here mirror their path on the root filesystem and are baked into the
image via `COPY overlay/ /` in the Containerfile.
```sh
sudo cp overlay/etc/gitconfig /etc/gitconfig
```
- `overlay/etc/...` — local/admin config. On the ostree-based image, content
shipped here becomes the default `/etc` and is still locally overridable
(3-way merged on upgrade), same as any package-installed `/etc` file.
- `overlay/usr/lib/systemd/...` — vendor-shipped units. `/usr` is replaced
wholesale on each image build/upgrade, so anything here always matches the
image and isn't meant to be hand-edited on a running system.
### overlay/etc/gitconfig
System-wide git config so every user on the box gets `main` as the default
init branch, not `master`.
## systemd/journald.conf.d/size-cap.conf
### overlay/etc/systemd/system/rpm-ostree-cleanup.{service,timer}
Weekly, runs as root via systemd (not cron/sudoers): `rpm-ostree cleanup -rb`
(drops rollback deployment and any pending deployment). Enabled at build time
via `RUN systemctl enable` in the Containerfile.
### overlay/etc/systemd/journald.conf.d/size-cap.conf
Continuous 500M journal retention cap instead of a periodic vacuum job.
```sh
sudo mkdir -p /etc/systemd/journald.conf.d
sudo cp systemd/journald.conf.d/size-cap.conf /etc/systemd/journald.conf.d/
sudo systemctl restart systemd-journald
```
### overlay/usr/lib/systemd/user/disk-cleanup.{service,timer}
Weekly, runs as the user, no privilege needed: `podman system prune -af`,
`flatpak uninstall --unused -y`, clears `~/.cache`. Auto-enabled for every
user via `overlay/usr/lib/systemd/user-preset/90-quine-linux.preset` — no
manual `systemctl --user enable` needed.

View file

@ -0,0 +1 @@
enable disk-cleanup.timer