splux-site · log · files · refs · tags · releases · people · languages · GitHub · commit
6df8617
Wire opt-in community recipe tree into the site
Parents
Stat
.github/workflows/pages.yml | 6 ++++++ README.md | 14 ++++++------ site/assets/git.js | 2 +- site/assets/live.js | 3 +++ site/assets/packages.js | 2 +- site/docs/community/index.html | 47 +++++++++++++++++++++++++++++++++++++++++ site/docs/first-boot/index.html | 2 +- site/docs/images/index.html | 4 ++-- site/docs/index.html | 7 +++++- site/docs/sps/index.html | 8 +++++-- site/download/index.html | 2 +- site/git/index.html | 4 ++-- site/index.html | 8 +++++-- site/install/index.html | 8 ++++++- site/news/index.html | 2 +- site/packages/index.html | 5 +++-- site/source/index.html | 4 +++- tools/build-git.sh | 15 ++++++++----- tools/build-site.sh | 31 +++++++++++++++++++++------ tools/collect-news.sh | 5 ++++- tools/subst.awk | 1 + 21 files changed, 144 insertions(+), 36 deletions(-)
Diff
diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
index 9101d49..04cad49 100644
--- a/.github/workflows/pages.yml
+++ b/.github/workflows/pages.yml
@@ -35,6 +35,11 @@ jobs:
repository: RobertFlexx/sps-extra
path: vendor/extra
fetch-depth: 0
+ - uses: actions/checkout@v4
+ with:
+ repository: RobertFlexx/sps-community
+ path: vendor/community
+ fetch-depth: 0
- uses: actions/checkout@v4
with:
repository: RobertFlexx/SPS
@@ -45,6 +50,7 @@ jobs:
GH_TOKEN: ${{ github.token }}
CORE: vendor/core
EXTRA: vendor/extra
+ COMMUNITY: vendor/community
SPS: vendor/sps
SITE_PREFIX: ""
run: sh tools/build-site.sh
diff --git a/README.md b/README.md
index 1281751..52cc5f2 100644
--- a/README.md
+++ b/README.md
@@ -7,11 +7,11 @@ This site was fully handmade by RobertFlexx.
## Build (for maintainers)
```sh
-CORE=/tmp/sps-core EXTRA=/tmp/sps-extra SPS=/path/to/SPS ./tools/build-site.sh
+CORE=/tmp/sps-core EXTRA=/tmp/sps-extra COMMUNITY=/tmp/sps-community SPS=/path/to/SPS ./tools/build-site.sh
```
-If `CORE`, `EXTRA`, or `SPS` are unset, the script clones
-`sps-core`, `sps-extra`, and `SPS` into `vendor/`.
+If `CORE`, `EXTRA`, `COMMUNITY`, or `SPS` are unset, the script clones
+`sps-core`, `sps-extra`, `sps-community`, and `SPS` into `vendor/`.
Output is `_site/`. Preview:
@@ -46,7 +46,7 @@ registered in `tools/build-site.sh` with the correct `../../../../` depth.
history, not edited by hand:
- every published SPS live ISO release (`RobertFlexx/SPS` GitHub Releases)
-- every commit on SPS, sps-core, sps-extra, and this repository that
+- every commit on SPS, sps-core, sps-extra, sps-community, and this repository that
Git or the GitHub API can see, with author and whether GitHub verified
the signature. Commit links point at Splux Git.
@@ -77,7 +77,7 @@ repository there. `SITE_PREFIX` stays empty so links are rooted at `/`.
## Git
-`/git/` is a live HTML mirror of SPS, sps-core, sps-extra, and this
+`/git/` is a live HTML mirror of SPS, sps-core, sps-extra, sps-community, and this
repository. Languages match GitHub Linguist. Open a language to see
how many files use it (`/git/<repo>/lang/<Lang>/`). Source files are
highlighted per language. Markdown files, README notes, and GitHub
@@ -101,12 +101,14 @@ from GitHub:
git clone https://github.com/RobertFlexx/SPS.git
git clone https://github.com/RobertFlexx/sps-core.git
git clone https://github.com/RobertFlexx/sps-extra.git
+git clone https://github.com/RobertFlexx/sps-community.git
git clone https://github.com/RobertFlexx/splux-site.git
```
News commit links point at `/git/<repo>/commit/<sha>/`. Author names
point at `/git/users/<login>/`. Recipe pages link into `/git/sps-core/`
-and `/git/sps-extra/`. Live ISO files stay on GitHub Releases.
+and `/git/sps-extra/`. Community recipes are under `/git/sps-community/` and are
+opt-in on the installed system. Live ISO files stay on GitHub Releases.
`git.splux.robertflexx.dev` is not a separate service. GitHub Pages
allows one custom domain on this repository (`splux.robertflexx.dev`).
diff --git a/site/assets/git.js b/site/assets/git.js
index 2e2b9e7..2f8097a 100644
--- a/site/assets/git.js
+++ b/site/assets/git.js
@@ -4,7 +4,7 @@
var API = "https://api.github.com";
var OWNER = "RobertFlexx";
var ACCEPT = { Accept: "application/vnd.github+json" };
- var REPOS = ["SPS", "sps-core", "sps-extra", "splux-site"];
+ var REPOS = ["SPS", "sps-core", "sps-extra", "sps-community", "splux-site"];
var TTL = 120000;
var COLORS = {};
diff --git a/site/assets/live.js b/site/assets/live.js
index 54e271d..60502d1 100644
--- a/site/assets/live.js
+++ b/site/assets/live.js
@@ -9,6 +9,7 @@
{ path: "SPS", label: "SPS" },
{ path: "sps-core", label: "sps-core" },
{ path: "sps-extra", label: "sps-extra" },
+ { path: "sps-community", label: "sps-community" },
{ path: "splux-site", label: "splux-site" }
];
@@ -569,6 +570,8 @@
setSha("live-core", "sps-core", sha);
else if (REPOS[k].path === "sps-extra")
setSha("live-extra", "sps-extra", sha);
+ else if (REPOS[k].path === "sps-community")
+ setSha("live-community", "sps-community", sha);
}
}).catch(function () {
/* keep the HTML from the last site build */
diff --git a/site/assets/packages.js b/site/assets/packages.js
index 1ef7e54..2c33126 100644
--- a/site/assets/packages.js
+++ b/site/assets/packages.js
@@ -1,4 +1,4 @@
-// Package data is generated from the official repositories.
+// Package data is generated from core, extra, and opt-in community.
(function () {
var form = document.getElementById("pkg-search");
var input = document.getElementById("q");
diff --git a/site/docs/community/index.html b/site/docs/community/index.html
new file mode 100644
index 0000000..6ba2a6b
--- /dev/null
+++ b/site/docs/community/index.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>Community recipes - Splux Linux</title>
+<meta name="description" content="Enable the opt-in sps-community recipe collection. Not on by default.">
+<link rel="icon" href="../../../../assets/favicon.png" type="image/png">
+<link rel="stylesheet" href="../../../../assets/style.css">
+</head>
+<body>
+<a class="skip" href="#main">Skip to content</a>
+<div class="wrap wide">
+@@HEADER@@
+<div class="handbook">
+@@DOCSNAV@@
+<main id="main">
+<h2>Community recipes</h2>
+<hr class="rule">
+<p><a href="../../../../git/sps-community/">sps-community</a> is a third recipe tree. It is hosted next to core and extra, uses the same SPS format, and is <strong>not</strong> enabled by <code>setup</code>, <code>mkiso</code>, or a fresh install. Core (priority 100) and extra (80) are. Community uses priority 50, so an official package of the same name always wins.</p>
+<p>That is the Alpine-style split: the distro ships the official collections; you add community yourself.</p>
+
+<h3>Enable it</h3>
+<p>Edit <code>/etc/sps/repos.conf</code>. A generated file already has these two lines commented. Uncomment the git line, or append it:</p>
+<pre class="block">git community https://github.com/RobertFlexx/sps-community.git 50</pre>
+<p>On a machine that still uses bundled <code>dir</code> trees:</p>
+<pre class="block">dir core /usr/src/sps/core 100
+dir extra /usr/src/sps/extra 80
+git community https://github.com/RobertFlexx/sps-community.git 50</pre>
+<p>Then:</p>
+<pre class="block">src update
+src search PATTERN
+sget info PACKAGE
+sget install PACKAGE</pre>
+<p><code>src update</code> clones the checkout to <code>/usr/src/sps/community</code>. Removing the git line and running <code>src update</code> again drops community from the index. Delete the checkout if you want it off disk.</p>
+<p>Do not raise community above extra or core. Do not reuse a package <code>name</code> that already exists in those trees.</p>
+
+<h3>What it is for</h3>
+<p>Software that has a canonical upstream archive and a SHA-256, is not in core or extra, and has been built at least once. Contribute with a GitHub pull request: one package, following <a href="https://github.com/RobertFlexx/sps-community/blob/main/CONTRIBUTING.md">CONTRIBUTING.md</a>. CI indexes the tree against core and extra. A green check does not mean the package compiled; that is still your job.</p>
+<p>Browse recipes on <a href="../../../../git/sps-community/">Splux Git</a> and in the <a href="../../../../packages/?repo=community">package list</a> (filter: community). Clone from GitHub: <a href="https://github.com/RobertFlexx/sps-community.git">github.com/RobertFlexx/sps-community.git</a>.</p>
+</main>
+</div>
+@@FOOTER@@
+</div>
+<script src="../../../../assets/docs.js?v=4c4f12c-20261019130111"></script>
+</body>
+</html>
diff --git a/site/docs/first-boot/index.html b/site/docs/first-boot/index.html
index 1662947..c68f0e9 100644
--- a/site/docs/first-boot/index.html
+++ b/site/docs/first-boot/index.html
@@ -64,7 +64,7 @@ dhcpcd eth0</pre>
<pre class="block">src update
sget install nano
pkstat</pre>
-<p>Search the <a href="../../../../packages/">package browser</a> for names. Extra is where desktop, init, and most applications live. Core is the base system, toolchain pieces that exist as recipes, boot, filesystems, and networking.</p>
+<p>Search the <a href="../../../../packages/">package browser</a> for names. Extra is where desktop, init, and most applications live. Core is the base system, toolchain pieces that exist as recipes, boot, filesystems, and networking. <a href="../../../../docs/community/">Community</a> is a third tree. It is not on until you add <code>git community</code> to <code>/etc/sps/repos.conf</code>.</p>
<h3>Configuration files</h3>
<p>Files under <code>etc</code> are preserved when you change them. On upgrade, SPS keeps the local file. If the new package also changed its copy, the new one is written beside it as <code>.sps-new</code>. SPS does not merge the two.</p>
diff --git a/site/docs/images/index.html b/site/docs/images/index.html
index 24e98a4..e65bf6c 100644
--- a/site/docs/images/index.html
+++ b/site/docs/images/index.html
@@ -18,7 +18,7 @@
<h2>Live images</h2>
<hr class="rule">
<p>Images are hybrid ISOs from <a href="../../../../git/SPS/">SPS</a>. Filenames stay the same; the current tag is <a href="https://github.com/RobertFlexx/SPS/releases/latest">live-2026-09-06-1</a> (2026-09-06). Verify against <a href="https://github.com/RobertFlexx/SPS/releases/latest/download/SHA256SUMS">SHA256SUMS</a>.</p>
-<p>Every image includes SPS (<code>src</code>, <code>sget</code>, <code>mkpkg</code>, <code>pkin</code>, <code>setup</code>, <code>mkiso</code>, and the rest), <code>dialog</code>, disk tools, <code>dhcpcd</code>, <code>grub-install</code>, and <code>grub-mkconfig</code>. Live PID 1 is busybox init on published snapshots. <code>/bin/sh</code> is busybox. Login is <code>root</code> with an empty password.</p>
+<p>Every image includes SPS (<code>src</code>, <code>sget</code>, <code>mkpkg</code>, <code>pkin</code>, <code>setup</code>, <code>mkiso</code>, and the rest), <code>dialog</code>, disk tools, <code>dhcpcd</code>, <code>grub-install</code>, and <code>grub-mkconfig</code>. Live PID 1 is busybox init on published snapshots. <code>/bin/sh</code> is busybox. Login is <code>root</code> with an empty password. Community recipes are not on the disc; add <code>git community</code> after install. See the <a href="../../../../docs/community/">community chapter</a>.</p>
<table class="docs">
<thead>
@@ -45,7 +45,7 @@
<section class="tabpanel" role="tabpanel" id="panel-img-tty" aria-labelledby="tab-img-tty">
<h3>sps-live-tty.iso</h3>
-<p>This is the install disc. <code>make iso</code> copies sps-core and sps-extra into <code>/usr/src/sps/{core,extra}</code> and writes <code>dir</code> entries in <code>/etc/sps/repos.conf</code>. A host seed compiler, headers, glibc startfiles, and kernel modules come along so packages can be built offline.</p>
+<p>This is the install disc. <code>make iso</code> copies sps-core and sps-extra into <code>/usr/src/sps/{core,extra}</code> and writes <code>dir</code> entries in <code>/etc/sps/repos.conf</code>. Community is a commented hint in that file, not a tree on the disc. A host seed compiler, headers, glibc startfiles, and kernel modules come along so packages can be built offline.</p>
<p>Seed tools include gcc, g++, make, cmake, ninja, meson, python3, perl, git, curl, wget, tar, xz, gzip, bzip2, zstd, nano, vim, pkg-config, and the binutils used to link. Partition tools, <code>dhcpcd</code>, <code>openssl</code>, <code>grub-install</code>, and <code>efibootmgr</code> (when the builder had it) are on this image too.</p>
<p>Manual install: <a href="../../../../install/#manual">Install, Manual tab</a>. Guided: <a href="../../../../install/#setup">Install, setup tab</a>.</p>
</section>
diff --git a/site/docs/index.html b/site/docs/index.html
index 5d0da81..623cce0 100644
--- a/site/docs/index.html
+++ b/site/docs/index.html
@@ -17,7 +17,7 @@
<main id="main">
<h2>Handbook</h2>
<hr class="rule">
-<p>This is the Splux Linux handbook. Splux is a source-based distribution. Packages are built on the machine that installs them, from recipes in <a href="../../../../git/">sps-core and sps-extra</a>, using SPS.</p>
+<p>This is the Splux Linux handbook. Splux is a source-based distribution. Packages are built on the machine that installs them, from recipes in <a href="../../../../git/">sps-core and sps-extra</a>, using SPS. A third tree, <a href="../../../../docs/community/">community</a>, exists but is not enabled until you add it.</p>
<p>Live images are development snapshots, not a numbered stable release. Read the chapter that matches the ISO you booted.</p>
<h3>Start here</h3>
@@ -39,6 +39,10 @@
<td><code>src</code>, <code>sget</code>, <code>mkpkg</code>, <code>pkin</code>, and the rest of the package system.</td>
</tr>
<tr>
+<td><a href="../../../../docs/community/">Community</a></td>
+<td>Opt-in <code>sps-community</code> recipes. Not enabled by <code>setup</code>. One line in <code>repos.conf</code>.</td>
+</tr>
+<tr>
<td><a href="../../../../docs/first-boot/">After first boot</a></td>
<td>Passwords, network, services, and the next packages.</td>
</tr>
@@ -61,6 +65,7 @@
<li><a href="../../../../git/SPS/blob/PACKAGE-MAINTAINER.md/">Package maintainer guide</a></li>
<li><a href="../../../../git/sps-core/">core collection</a></li>
<li><a href="../../../../git/sps-extra/">extra collection</a></li>
+<li><a href="../../../../git/sps-community/">community collection</a> (opt-in)</li>
<li><a href="../../../../git/">Splux Git</a></li>
<li><a href="../../../../source/">Source repositories</a></li>
</ul>
diff --git a/site/docs/sps/index.html b/site/docs/sps/index.html
index d3c12dd..6bdb840 100644
--- a/site/docs/sps/index.html
+++ b/site/docs/sps/index.html
@@ -56,12 +56,15 @@ unset SPS_DB SPS_CACHE SPS_BUILD SPS_CONFIG SPS_REPOS_CONFIG SPS_REPO_ROOT</pre>
<p>Leaving those unset is required so they resolve under the target, not under the live root.</p>
<h3>Repositories</h3>
-<p><code>/etc/sps/repos.conf</code> lists trees. Higher priority wins. Clone from GitHub. The handbook git pages are an HTML mirror of the same trees, not a clone URL.</p>
+<p><code>/etc/sps/repos.conf</code> 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 <a href="../../../../docs/community/">community chapter</a>.</p>
<pre class="block">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</pre>
+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</pre>
<p>On tty and Plasma images the live <code>repos.conf</code> uses <code>dir</code> entries pointing at the bundled trees. Slim images have no recipes, so they use the git lines. <code>src update</code> for a git repo needs <code>git</code>, which slim does not ship.</p>
<p>During a target install, <code>setup</code> writes <code>dir</code> paths prefixed with the target (<code>/mnt/usr/src/sps/core</code>) so <code>src update</code> can index them from the live system, then rewrites them to <code>/usr/src/sps/...</code> for the booted machine. The <a href="../../../../install/#manual">manual install</a> does the same.</p>
@@ -97,6 +100,7 @@ sget install curl</pre>
<li><a href="../../../../git/SPS/blob/README.md/">SPS README</a></li>
<li><a href="../../../../git/SPS/blob/DESIGN.md/">DESIGN.md</a></li>
<li><a href="../../../../git/SPS/blob/PACKAGE-MAINTAINER.md/">Recipe format</a></li>
+<li><a href="../../../../docs/community/">Community recipes</a></li>
<li><a href="../../../../packages/">Package browser</a></li>
</ul>
</main>
diff --git a/site/download/index.html b/site/download/index.html
index e4fbeeb..8f28016 100644
--- a/site/download/index.html
+++ b/site/download/index.html
@@ -22,7 +22,7 @@
<h2>Images</h2>
<hr class="rule">
<p><a href="https://github.com/RobertFlexx/SPS/releases/latest/download/sps-live-tty.iso">sps-live-tty.iso</a><br>
-Console live image with sps-core, sps-extra, and a seed compiler so <code>setup</code> or a manual source install can build packages. This is the install disc.</p>
+Console live image with sps-core, sps-extra, and a seed compiler so <code>setup</code> or a manual source install can build packages. This is the install disc. Community is not enabled on the image; see the <a href="../../../../docs/community/">community chapter</a>.</p>
<p><a href="https://github.com/RobertFlexx/SPS/releases/latest/download/sps-live-tty-slim.iso">sps-live-tty-slim.iso</a><br>
Small console image without recipes, git, or a compiler. Rescue, partitioning, and network debugging. Not a source-install disc. See the <a href="../../../../install/#slim">slim handbook</a>.</p>
<p><a href="https://github.com/RobertFlexx/SPS/releases/latest/download/sps-live-plasma.iso">sps-live-plasma.iso</a><br>
diff --git a/site/git/index.html b/site/git/index.html
index 2827b91..5095aeb 100644
--- a/site/git/index.html
+++ b/site/git/index.html
@@ -4,7 +4,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Git - Splux Linux</title>
-<meta name="description" content="Static browse of the official Splux git trees.">
+<meta name="description" content="Static browse of the Splux git trees.">
<link rel="icon" href="../../../../assets/favicon.png" type="image/png">
<link rel="stylesheet" href="../../../../assets/style.css">
</head>
@@ -15,7 +15,7 @@
<main id="main">
<h2>Git</h2>
<hr class="rule">
-<p>This page is generated at site build from the official clones. Languages follow GitHub Linguist. Commits link to the GitHub accounts that uploaded them. If you are reading it in the source tree, run <code>tools/build-site.sh</code>.</p>
+<p>This page is generated at site build from the clones. Languages follow GitHub Linguist. Commits link to the GitHub accounts that uploaded them. If you are reading it in the source tree, run <code>tools/build-site.sh</code>. <a href="../../../../docs/community/">sps-community</a> is listed here; it is not enabled by <code>setup</code>.</p>
</main>
@@FOOTER@@
</div>
diff --git a/site/index.html b/site/index.html
index a87cfb7..aa6d402 100644
--- a/site/index.html
+++ b/site/index.html
@@ -65,7 +65,7 @@ mkpkg: running configure phase
mkpkg: running build phase
mkpkg: built curl-8.21.0-2-x86_64.pkg.tar.zst
pkin: installed curl 8.21.0-2</pre>
-<p><a href="../../../../packages/">Search 1474 packages</a> in the official trees.</p>
+<p><a href="../../../../packages/">Search 1474 packages</a> in core, extra, and community. Community is opt-in; see the <a href="../../../../docs/community/">community chapter</a>.</p>
<h2 id="repos"><span class="num">[004]</span> Repositories</h2>
<hr class="rule">
@@ -73,7 +73,9 @@ pkin: installed curl 8.21.0-2</pre>
Base system, toolchain, libraries, boot, filesystems, and networking. 119 packages. GitHub mirror: <a href="https://github.com/RobertFlexx/sps-core">RobertFlexx/sps-core</a>.</p>
<p><a href="../../../../git/sps-extra/">sps-extra</a><br>
Desktop software, graphics, multimedia, development tools, and other packages. 1355 packages. GitHub mirror: <a href="https://github.com/RobertFlexx/sps-extra">RobertFlexx/sps-extra</a>.</p>
-<p>SPS also supports administrator-maintained local repositories in addition to the official trees. Browse recipes from <a href="../../../../git/">Splux Git</a>.</p>
+<p><a href="../../../../git/sps-community/">sps-community</a><br>
+Opt-in community recipes. 0 packages. Not enabled by <code>setup</code> or <code>mkiso</code>. Add one line to <code>/etc/sps/repos.conf</code>. Handbook: <a href="../../../../docs/community/">community recipes</a>. GitHub: <a href="https://github.com/RobertFlexx/sps-community">RobertFlexx/sps-community</a>.</p>
+<p>SPS also supports administrator-maintained local repositories. Browse recipes from <a href="../../../../git/">Splux Git</a>.</p>
<h2 id="docs"><span class="num">[005]</span> Documentation</h2>
<hr class="rule">
@@ -94,6 +96,8 @@ the package system<br>
official base recipes<br>
<a href="../../../../git/sps-extra/">sps-extra</a>
official extra recipes<br>
+<a href="../../../../git/sps-community/">sps-community</a>
+opt-in community recipes<br>
<a href="../../../../git/splux-site/">splux-site</a>
this website
</p>
diff --git a/site/install/index.html b/site/install/index.html
index 0b060a9..fa54325 100644
--- a/site/install/index.html
+++ b/site/install/index.html
@@ -207,6 +207,9 @@ rm -rf /mnt/usr/src/sps/core/.git /mnt/usr/src/sps/extra/.git
cat > /mnt/etc/sps/repos.conf <<'EOF'
dir core /mnt/usr/src/sps/core 100
dir extra /mnt/usr/src/sps/extra 80
+
+# Community is not enabled by default.
+# git community https://github.com/RobertFlexx/sps-community.git 50
EOF</pre>
<p>Those paths are for indexing from the live system. After packages you rewrite them to <code>/usr/src/sps/...</code> for the booted machine.</p>
</li>
@@ -281,6 +284,9 @@ sget install grub</pre>
<pre class="block">cat > /mnt/etc/sps/repos.conf <<'EOF'
dir core /usr/src/sps/core 100
dir extra /usr/src/sps/extra 80
+
+# Community is not enabled by default.
+# git community https://github.com/RobertFlexx/sps-community.git 50
EOF</pre>
</li>
<li>
@@ -364,7 +370,7 @@ reboot</pre>
<h3>Slim ISO</h3>
<p><code>sps-live-tty-slim.iso</code> is the small console image from <code>make iso-slim</code> (<code>--no-seed --no-modules</code>, no <code>--core</code>, no <code>--extra</code>). It is a rescue and disk tool. It is not a Splux source-install disc.</p>
<div class="callout">
-<p><strong>What slim cannot do.</strong> No gcc, no make, no git, no python, no meson, no recipes, no live kernel modules. <code>repos.conf</code> lists git URLs, but <code>git</code> is not on the image, so <code>src update</code> cannot clone sps-core. <code>setup</code> is present because SPS is installed on every live root; it still cannot build packages here.</p>
+<p><strong>What slim cannot do.</strong> No gcc, no make, no git, no python, no meson, no recipes, no live kernel modules. <code>repos.conf</code> lists git URLs for core and extra, but <code>git</code> is not on the image, so <code>src update</code> cannot clone them. Community stays a comment. <code>setup</code> is present because SPS is installed on every live root; it still cannot build packages here.</p>
</div>
<h4>What is on the disc</h4>
diff --git a/site/news/index.html b/site/news/index.html
index beb9db0..5d80bf0 100644
--- a/site/news/index.html
+++ b/site/news/index.html
@@ -16,7 +16,7 @@
<main id="main">
<h2>News</h2>
<hr class="rule">
-<p>This page is filled from git history: every published SPS live ISO release on GitHub, plus commits on SPS, sps-core, sps-extra, and this website. Commit links go to Splux Git. Nobody has to edit it for a new snapshot or commit to show up.</p>
+<p>This page is filled from git history: every published SPS live ISO release on GitHub, plus commits on SPS, sps-core, sps-extra, sps-community, and this website. Commit links go to Splux Git. Nobody has to edit it for a new snapshot or commit to show up.</p>
<p class="note">Times are shown in your local timezone. Commits name the author and whether GitHub verified the signature. Long feeds split into pages of twenty. <a href="../../../../news/atom.xml">Atom feed</a>.</p>
@@NEWS_INFO@@
<h2>Feed</h2>
diff --git a/site/packages/index.html b/site/packages/index.html
index e48f0cf..7764146 100644
--- a/site/packages/index.html
+++ b/site/packages/index.html
@@ -4,7 +4,7 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Packages - Splux Linux</title>
-<meta name="description" content="Official Splux package collections: core and extra.">
+<meta name="description" content="Splux package collections: core, extra, and opt-in community.">
<link rel="icon" href="../../../../assets/favicon.png" type="image/png">
<link rel="stylesheet" href="../../../../assets/style.css">
</head>
@@ -15,7 +15,7 @@
<main id="main">
<h2>Packages</h2>
<hr class="rule">
-<p>Generated from the official <a href="../../../../git/sps-core/">sps-core</a> and <a href="../../../../git/sps-extra/">sps-extra</a> recipe trees. 1474 packages (119 core, 1355 extra). Updated 2026-10-19 13:01 UTC. Browse them from <a href="../../../../git/">Splux Git</a>.</p>
+<p>Generated from <a href="../../../../git/sps-core/">sps-core</a>, <a href="../../../../git/sps-extra/">sps-extra</a>, and the opt-in <a href="../../../../git/sps-community/">sps-community</a> tree. 1474 packages (119 core, 1355 extra, 0 community). Community is listed here so you can see it; <code>setup</code> does not enable it. Updated 2026-10-19 13:01 UTC. Browse recipes from <a href="../../../../git/">Splux Git</a>.</p>
<form id="pkg-search" role="search">
<label class="search" for="q">Search
<input id="q" name="q" type="search" autocomplete="off" spellcheck="false">
@@ -25,6 +25,7 @@
<a href="?repo=all" data-repo="all">all</a>
<a href="?repo=core" data-repo="core">core</a>
<a href="?repo=extra" data-repo="extra">extra</a>
+<a href="?repo=community" data-repo="community">community</a>
</p>
<p class="stats" id="pkg-stats">1474 packages</p>
<div style="overflow-x:auto">
diff --git a/site/source/index.html b/site/source/index.html
index eacfd1c..6f3a84b 100644
--- a/site/source/index.html
+++ b/site/source/index.html
@@ -15,13 +15,15 @@
<main id="main">
<h2>Source</h2>
<hr class="rule">
-<p>Canonical trees are browsed on <a href="../../../../git/">Splux Git</a>, a live HTML mirror of the official clones, including GitHub accounts. Clone from GitHub. License for SPS and the package collections is ISC. See each repository.</p>
+<p>Canonical trees are browsed on <a href="../../../../git/">Splux Git</a>, a live HTML mirror of the clones, including GitHub accounts. Clone from GitHub. License for SPS and the package collections is ISC. See each repository.</p>
<p><a href="../../../../git/SPS/">SPS</a><br>
Source Package System. POSIX shell and AWK. Installer and live ISO builder live here too. Clone: <a href="https://github.com/RobertFlexx/SPS.git">github.com/RobertFlexx/SPS.git</a>.</p>
<p><a href="../../../../git/sps-core/">sps-core</a><br>
Official base recipe collection. Clone: <a href="https://github.com/RobertFlexx/sps-core.git">github.com/RobertFlexx/sps-core.git</a>.</p>
<p><a href="../../../../git/sps-extra/">sps-extra</a><br>
Official extra recipe collection. Clone: <a href="https://github.com/RobertFlexx/sps-extra.git">github.com/RobertFlexx/sps-extra.git</a>.</p>
+<p><a href="../../../../git/sps-community/">sps-community</a><br>
+Opt-in community recipes. Not enabled by <code>setup</code> or <code>mkiso</code>. Clone: <a href="https://github.com/RobertFlexx/sps-community.git">github.com/RobertFlexx/sps-community.git</a>. How to turn it on: <a href="../../../../docs/community/">community chapter</a>.</p>
<p><a href="../../../../git/splux-site/">splux-site</a><br>
This website. Static HTML generated from the recipe trees. Clone: <a href="https://github.com/RobertFlexx/splux-site.git">github.com/RobertFlexx/splux-site.git</a>.</p>
</main>
diff --git a/tools/build-git.sh b/tools/build-git.sh
index dfbef10..cfa095b 100755
--- a/tools/build-git.sh
+++ b/tools/build-git.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Build a static git browser under $OUT/git from local clones.
# Languages follow GitHub Linguist. Authors are GitHub accounts when known.
-# Env: OUT CORE EXTRA SPS SITE GIT_HOST SITE_URL
+# Env: OUT CORE EXTRA COMMUNITY SPS SITE GIT_HOST SITE_URL
set -eu
@@ -10,6 +10,7 @@ cd "$(CDPATH= cd -P "$(dirname "$0")/.." && pwd)" || exit 1
OUT=${OUT:-_site}
CORE=${CORE:-vendor/core}
EXTRA=${EXTRA:-vendor/extra}
+COMMUNITY=${COMMUNITY:-vendor/community}
SPS=${SPS:-vendor/sps}
SITE=${SITE:-.}
SITE_URL=${SITE_URL:-https://splux.robertflexx.dev}
@@ -60,6 +61,7 @@ github_of() {
SPS) printf '%s\n' https://github.com/RobertFlexx/SPS ;;
sps-core) printf '%s\n' https://github.com/RobertFlexx/sps-core ;;
sps-extra) printf '%s\n' https://github.com/RobertFlexx/sps-extra ;;
+ sps-community) printf '%s\n' https://github.com/RobertFlexx/sps-community ;;
splux-site) printf '%s\n' https://github.com/RobertFlexx/splux-site ;;
*) printf '%s\n' "https://github.com/RobertFlexx/$1" ;;
esac
@@ -70,6 +72,7 @@ desc_of() {
SPS) printf '%s\n' 'Source Package System. Installer and live ISO builder.' ;;
sps-core) printf '%s\n' 'Official base recipe collection.' ;;
sps-extra) printf '%s\n' 'Official extra recipe collection.' ;;
+ sps-community) printf '%s\n' 'Opt-in community recipe collection. Not enabled by setup.' ;;
splux-site) printf '%s\n' 'This website. Static HTML from the recipe trees.' ;;
*) printf '%s\n' "$1" ;;
esac
@@ -1469,6 +1472,7 @@ build_repo() {
build_repo SPS "$SPS"
build_repo sps-core "$CORE"
build_repo sps-extra "$EXTRA"
+build_repo sps-community "$COMMUNITY"
build_repo splux-site "$SITE"
# People across trees
@@ -1516,12 +1520,12 @@ GIT_REPO=
GIT_USER=
GIT_SHA=
GIT_PATH=
-page_begin "$OUT/git/users/index.html" "People - Splux Git" "GitHub accounts that pushed to the official Splux trees."
+page_begin "$OUT/git/users/index.html" "People - Splux Git" "GitHub accounts that pushed to the Splux trees."
{
printf '%s\n' '<p class="git-nav"><a href="../">git</a> · people</p>'
printf '%s\n' '<h2>People</h2>'
printf '%s\n' '<hr class="rule">'
- printf '%s\n' '<p>Accounts that authored commits in SPS, sps-core, sps-extra, and this site. Avatars and names come from GitHub. Open someone to see their profile and their commits here.</p>'
+ printf '%s\n' '<p>Accounts that authored commits in SPS, sps-core, sps-extra, sps-community, and this site. Avatars and names come from GitHub. Open someone to see their profile and their commits here.</p>'
printf '%s\n' '<p class="live-note" id="git-live" hidden>Updated from GitHub.</p>'
if [ -s "$users_full" ]; then
awk -F '\t' -v OFS='\t' '{ print $1, $4, $11 }' "$users_full" |
@@ -1619,11 +1623,11 @@ GIT_REPO=
GIT_USER=
GIT_SHA=
GIT_PATH=
-page_begin "$OUT/git/index.html" "Git - Splux Linux" "Always-updating browse of the official Splux git trees."
+page_begin "$OUT/git/index.html" "Git - Splux Linux" "Always-updating browse of the Splux git trees."
{
printf '%s\n' '<h2>Git</h2>'
printf '%s\n' '<hr class="rule">'
- printf '%s\n' '<p>This is a live HTML mirror of the official trees. Languages match GitHub Linguist. Each commit shows the GitHub account that uploaded it, with their avatar. Open <a href="users/">people</a> for profiles. Pages rebuild with the handbook; the browser also asks GitHub for anything newer. There is no git server here. Clone the GitHub URLs.</p>'
+ printf '%s\n' '<p>This is a live HTML mirror of the trees. Languages match GitHub Linguist. Each commit shows the GitHub account that uploaded it, with their avatar. Open <a href="users/">people</a> for profiles. Pages rebuild with the handbook; the browser also asks GitHub for anything newer. There is no git server here. Clone the GitHub URLs. <a href="../../../../docs/community/">sps-community</a> is listed here; it is not enabled by <code>setup</code>.</p>'
printf '%s\n' '<p class="git-nav"><a href="users/">people</a></p>'
printf '%s\n' '<p class="live-note" id="git-live" hidden>Updated from GitHub.</p>'
printf '%s\n' '<p><label for="git-filter">Filter</label> <input id="git-filter" type="search" placeholder="repository"></p>'
@@ -1655,6 +1659,7 @@ page_begin "$OUT/git/index.html" "Git - Splux Linux" "Always-updating browse of
printf '%s\n' '<pre class="block">git clone https://github.com/RobertFlexx/SPS.git'
printf '%s\n' 'git clone https://github.com/RobertFlexx/sps-core.git'
printf '%s\n' 'git clone https://github.com/RobertFlexx/sps-extra.git'
+ printf '%s\n' 'git clone https://github.com/RobertFlexx/sps-community.git'
printf '%s\n' 'git clone https://github.com/RobertFlexx/splux-site.git</pre>'
printf '%s\n' '<p class="note">Live ISO files stay on GitHub Releases. Recipe browse also lives under <a href="../../../../packages/">packages</a>.</p>'
} >>"$OUT/git/index.html"
diff --git a/tools/build-site.sh b/tools/build-site.sh
index ac3ff64..bc3b298 100755
--- a/tools/build-site.sh
+++ b/tools/build-site.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Build the static Splux website from official SPS recipe trees.
# Usage: ./tools/build-site.sh
-# Optional: CORE EXTRA SITE_PREFIX OUT
+# Optional: CORE EXTRA COMMUNITY SPS SITE_PREFIX OUT
set -eu
@@ -9,12 +9,14 @@ cd "$(CDPATH= cd -P "$(dirname "$0")/.." && pwd)" || exit 1
CORE=${CORE:-vendor/core}
EXTRA=${EXTRA:-vendor/extra}
+COMMUNITY=${COMMUNITY:-vendor/community}
SPS=${SPS:-vendor/sps}
SITE=${SITE:-.}
OUT=${OUT:-_site}
SITE_PREFIX=${SITE_PREFIX-}
CORE_GIT=${CORE_GIT:-https://github.com/RobertFlexx/sps-core}
EXTRA_GIT=${EXTRA_GIT:-https://github.com/RobertFlexx/sps-extra}
+COMMUNITY_GIT=${COMMUNITY_GIT:-https://github.com/RobertFlexx/sps-community}
SPS_GIT=${SPS_GIT:-https://github.com/RobertFlexx/SPS}
SITE_URL=${SITE_URL:-https://splux.robertflexx.dev}
GIT_HOST=${GIT_HOST:-https://splux.robertflexx.dev/git}
@@ -38,6 +40,10 @@ if [ ! -d "$EXTRA" ]; then
clone_tree "$EXTRA_GIT.git" vendor/extra
EXTRA=vendor/extra
fi
+if [ ! -d "$COMMUNITY" ]; then
+ clone_tree "$COMMUNITY_GIT.git" vendor/community
+ COMMUNITY=vendor/community
+fi
if [ ! -d "$SPS" ]; then
clone_tree "$SPS_GIT.git" vendor/sps
SPS=vendor/sps
@@ -46,7 +52,7 @@ fi
rm -rf "$OUT"
mkdir -p "$OUT/assets" "$OUT/data" "$OUT/download" "$OUT/packages" \
"$OUT/install" "$OUT/docs" "$OUT/docs/images" "$OUT/docs/sps" \
- "$OUT/docs/first-boot" "$OUT/source" "$OUT/news" "$OUT/git"
+ "$OUT/docs/community" "$OUT/docs/first-boot" "$OUT/source" "$OUT/news" "$OUT/git"
cp -a site/assets/. "$OUT/assets/"
if [ -f CNAME ]; then
@@ -98,6 +104,7 @@ write_docs_nav() {
images "${root}docs/images/" "Live images" \
install "${root}install/" "Install" \
sps "${root}docs/sps/" "SPS tools" \
+ community "${root}docs/community/" "Community" \
firstboot "${root}docs/first-boot/" "After first boot" \
git "${root}git/" "Git"
while [ "$#" -ge 3 ]
@@ -126,6 +133,10 @@ scan_tree() {
rootdir=$2
github=$3
mirror=${4-}
+ if [ ! -d "$rootdir" ]; then
+ printf '%s\n' "warning: missing recipe tree $rootdir" >&2
+ return 0
+ fi
find "$rootdir" -name recipe -type f | LC_ALL=C sort | while IFS= read -r rec
do
rel=${rec#"$rootdir"/}
@@ -151,6 +162,7 @@ scan_tree() {
printf '%s\n' "reading recipes" >&2
scan_tree core "$CORE" "$GIT_HOST/sps-core" "https://github.com/RobertFlexx/sps-core"
scan_tree extra "$EXTRA" "$GIT_HOST/sps-extra" "https://github.com/RobertFlexx/sps-extra"
+scan_tree community "$COMMUNITY" "$GIT_HOST/sps-community" "https://github.com/RobertFlexx/sps-community"
LC_ALL=C sort -t "$(printf '\t')" -k1,1 -k5,5 "$tsv" >"$tmp/sorted.tsv"
mv "$tmp/sorted.tsv" "$tsv"
@@ -158,6 +170,7 @@ mv "$tmp/sorted.tsv" "$tsv"
npkgs=$(awk 'END { print NR + 0 }' "$tsv")
ncore=$(awk -F '\t' '$5 == "core" { n++ } END { print n + 0 }' "$tsv")
nextra=$(awk -F '\t' '$5 == "extra" { n++ } END { print n + 0 }' "$tsv")
+ncommunity=$(awk -F '\t' '$5 == "community" { n++ } END { print n + 0 }' "$tsv")
curlver=$(awk -F '\t' '$1 == "curl" { print $2 "-" $3; exit }' "$tsv")
[ -n "$curlver" ] || curlver="8.21.0-1"
@@ -248,7 +261,7 @@ short_sha() {
git -C "$1" rev-parse --short HEAD 2>/dev/null || printf '%s\n' unknown
}
-export CORE EXTRA SPS SITE GIT_HOST
+export CORE EXTRA COMMUNITY SPS SITE GIT_HOST
if ! sh tools/collect-news.sh >"$tmp/news.tsv"
then
printf '%s\n' "warning: news collection failed" >&2
@@ -276,6 +289,7 @@ pagetitle=
sps_sha=$(short_sha "$SPS")
core_sha=$(short_sha "$CORE")
extra_sha=$(short_sha "$EXTRA")
+community_sha=$(short_sha "$COMMUNITY")
site_sha=$(short_sha "$SITE")
livesig=${site_sha}-$(date -u '+%Y%m%d%H%M%S' 2>/dev/null || date +%Y%m%d%H%M%S)
@@ -285,7 +299,8 @@ cat >"$tmp/news-info.html" <<EOF
<div class="dl-row"><span class="muted">SPS</span><span id="live-sps"><a href="$GIT_HOST/SPS/commit/$sps_sha/">$sps_sha</a></span></div>
<div class="dl-row"><span class="muted">sps-core</span><span id="live-core"><a href="$GIT_HOST/sps-core/commit/$core_sha/">$core_sha</a></span></div>
<div class="dl-row"><span class="muted">sps-extra</span><span id="live-extra"><a href="$GIT_HOST/sps-extra/commit/$extra_sha/">$extra_sha</a></span></div>
-<div class="dl-row"><span class="muted">Packages</span><span>$npkgs ($ncore core, $nextra extra)</span></div>
+<div class="dl-row"><span class="muted">sps-community</span><span id="live-community"><a href="$GIT_HOST/sps-community/commit/$community_sha/">$community_sha</a></span></div>
+<div class="dl-row"><span class="muted">Packages</span><span>$npkgs ($ncore core, $nextra extra, $ncommunity community)</span></div>
<div class="dl-row"><span class="muted">Site build</span><span>$generated ($site_sha)</span></div>
</div>
EOF
@@ -315,6 +330,7 @@ subst() {
-v npkgs="$npkgs" \
-v ncore="$ncore" \
-v nextra="$nextra" \
+ -v ncommunity="$ncommunity" \
-v generated="$generated" \
-v livesig="$livesig" \
-v curlver="$curlver" \
@@ -330,10 +346,11 @@ subst site/install/index.html "$OUT/install/index.html" "../" install
subst site/docs/index.html "$OUT/docs/index.html" "../" overview
subst site/docs/images/index.html "$OUT/docs/images/index.html" "../../" images
subst site/docs/sps/index.html "$OUT/docs/sps/index.html" "../../" sps
+subst site/docs/community/index.html "$OUT/docs/community/index.html" "../../" community
subst site/docs/first-boot/index.html "$OUT/docs/first-boot/index.html" "../../" firstboot
subst site/source/index.html "$OUT/source/index.html" "../"
-export OUT CORE EXTRA SPS SITE GIT_HOST SITE_URL
+export OUT CORE EXTRA COMMUNITY SPS SITE GIT_HOST SITE_URL
sh tools/build-git.sh
find "$OUT/git" -name index.html >"$tmp/gitpages"
while IFS= read -r page
@@ -369,6 +386,7 @@ do
-v npkgs="$npkgs" \
-v ncore="$ncore" \
-v nextra="$nextra" \
+ -v ncommunity="$ncommunity" \
-v generated="$generated" \
-v livesig="$livesig" \
-v curlver="$curlver" \
@@ -446,6 +464,7 @@ do
-v npkgs="$npkgs" \
-v ncore="$ncore" \
-v nextra="$nextra" \
+ -v ncommunity="$ncommunity" \
-v generated="$generated" \
-v livesig="$livesig" \
-v curlver="$curlver" \
@@ -454,4 +473,4 @@ do
mv "$tmp/page.html" "$page"
done
-printf '%s\n' "built $OUT ($npkgs packages, $ncore core, $nextra extra, tag $tag)" >&2
+printf '%s\n' "built $OUT ($npkgs packages, $ncore core, $nextra extra, $ncommunity community, tag $tag)" >&2
diff --git a/tools/collect-news.sh b/tools/collect-news.sh
index 0b6dfd7..1922454 100755
--- a/tools/collect-news.sh
+++ b/tools/collect-news.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Collect Splux releases and git history into TSV for the news page.
# Fields: epoch iso kind repo url title summary author verified avatar
-# Env: CORE EXTRA SPS SITE GIT_HOST (git work trees). GH_TOKEN optional via gh.
+# Env: CORE EXTRA COMMUNITY SPS SITE GIT_HOST (git work trees). GH_TOKEN optional via gh.
# Pulls every non-draft SPS release and every commit available from the
# local clones and from the GitHub API. Commit URLs point at Splux Git.
# Duplicate URLs keep the last row so GitHub author and verified data
@@ -11,6 +11,7 @@ set -eu
CORE=${CORE:-vendor/core}
EXTRA=${EXTRA:-vendor/extra}
+COMMUNITY=${COMMUNITY:-vendor/community}
SPS=${SPS:-vendor/sps}
SITE=${SITE:-.}
GIT_HOST=${GIT_HOST:-https://splux.robertflexx.dev/git}
@@ -106,6 +107,7 @@ read_commit_tsv() {
git_commits "$SPS" SPS "$GIT_HOST/SPS"
git_commits "$CORE" sps-core "$GIT_HOST/sps-core"
git_commits "$EXTRA" sps-extra "$GIT_HOST/sps-extra"
+git_commits "$COMMUNITY" sps-community "$GIT_HOST/sps-community"
git_commits "$SITE" splux-site "$GIT_HOST/splux-site"
if command -v gh >/dev/null 2>&1; then
@@ -153,6 +155,7 @@ if command -v gh >/dev/null 2>&1; then
api_commits RobertFlexx/SPS SPS
api_commits RobertFlexx/sps-core sps-core
api_commits RobertFlexx/sps-extra sps-extra
+ api_commits RobertFlexx/sps-community sps-community
api_commits RobertFlexx/splux-site splux-site
fi
diff --git a/tools/subst.awk b/tools/subst.awk
index 03c2b0e..535ad2a 100644
--- a/tools/subst.awk
+++ b/tools/subst.awk
@@ -77,6 +77,7 @@ $0 == "@@DOCSNAV@@" {
gsub(/1474/, npkgs)
gsub(/119/, ncore)
gsub(/1355/, nextra)
+ gsub(/0/, ncommunity)
gsub(/2026-10-19 13:01 UTC/, generated)
gsub(/4c4f12c-20261019130111/, livesig)
gsub(/8.21.0-2/, curlver)