SPS tools
SPS is a set of small POSIX shell and AWK programs, not one large front end. Splux uses them for the installer, live images, and official collections. The same tools can manage a tree that is not Splux.
On a live image they live on PATH under /usr. Package database, cache, and build directories are under SPS_ROOT (default /).
| Tool | Role |
|---|---|
src | Repository handling. src update clones or indexes trees from /etc/sps/repos.conf. |
sget | Dependency-aware frontend. Resolves a graph, then calls mkpkg and pkin. |
mkpkg | Builds one recipe into a .pkg.tar.zst (or gz/xz when compression says so). |
pkin | Installs a built package into SPS_ROOT. |
pkdel | Removes an installed package. |
pkstat | Queries the installed database. |
pkcheck | Verifies files against recorded checksums. |
pkmark | Marks why a package is installed (explicit / as-needed). |
setup | Splux installer. Dialog screens, or the same choices from flags. Not required to use SPS. |
mkiso | Builds Splux live images. Maintainer tool. |
Configuration
/etc/sps/sps.conf must exist before the first sget. Live images already have one. Default keys:
db /var/lib/sps cache /var/cache/sps build /var/tmp/sps repo_root /usr/src/sps makejobs auto cflags -O2 -pipe cxxflags -O2 -pipe march native compression auto preserve etc
Paths in that file are relative to SPS_ROOT unless you override them with environment variables. For an install into /mnt:
export SPS_ROOT=/mnt unset SPS_DB SPS_CACHE SPS_BUILD SPS_CONFIG SPS_REPOS_CONFIG SPS_REPO_ROOT
Leaving those unset is required so they resolve under the target, not under the live root.
Repositories
/etc/sps/repos.conf lists trees. Higher priority wins. Clone from GitHub. The handbook git pages are an HTML mirror of the same trees, not a clone URL. Core and extra are enabled. Community is a commented hint only until you add it. See the community chapter.
dir core /usr/src/sps/core 100 dir extra /usr/src/sps/extra 80 git core https://github.com/RobertFlexx/sps-core.git 100 git extra https://github.com/RobertFlexx/sps-extra.git 80 # Community is not enabled by default. # git community https://github.com/RobertFlexx/sps-community.git 50
On tty and Plasma images the live repos.conf uses dir entries pointing at the bundled trees. Slim images have no recipes, so they use the git lines. src update for a git repo needs git, which slim does not ship.
During a target install, setup writes dir paths prefixed with the target (/mnt/usr/src/sps/core) so src update can index them from the live system, then rewrites them to /usr/src/sps/... for the booted machine. The manual install does the same.
Install a package
src update sget install curl
That resolves dependencies, builds each recipe with the live compiler, and installs into SPS_ROOT. Builds take as long as compiling that software usually takes. Plasma graphs compile Qt and KDE.
Init packages
These conflict. sget will not install more than one. Write the choice to $SPS_ROOT/etc/sps/init before the first package so service hooks see it.
| File | Package | PID 1 |
|---|---|---|
systemd | init-systemd | systemd (udev, logind) |
openrc | init-openrc | OpenRC, eudev, elogind |
s6 | init-s6 | s6, eudev, elogind |
runit | init-runit | runit, eudev, elogind |
dinit | init-dinit | dinit, eudev, elogind |
shepherd | init-shepherd | GNU Shepherd, eudev, elogind, Guile |
sysvinit | init-sysvinit | SysV init, eudev, elogind |
none | (no init package) | the installed tree has no PID 1 from SPS |
Init packages live in extra. A bootable console needs extra recipes on the disc (tty or Plasma), not slim.
Kernels
linux-desktop is the Splux daily-driver config (DRM, NVMe, virtio, filesystems). It installs /boot/vmlinuz-desktop-7.2.2. linux is upstream defconfig and installs /boot/vmlinuz-7.2.2. Neither package runs grub-install. none will not boot a new disk.