Skip to content

chore(packaging): Guix-only — remove flake.nix, add a real guix.scm - #211

Merged
hyperpolymath merged 2 commits into
mainfrom
chore/guix-only-packaging
Jul 29, 2026
Merged

chore(packaging): Guix-only — remove flake.nix, add a real guix.scm#211
hyperpolymath merged 2 commits into
mainfrom
chore/guix-only-packaging

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

chore(packaging): Guix-only — remove flake.nix, add a real guix.scm

The estate retired the Nix fallback on 2026-05-18. flake.nix was nonetheless
added to this repo on 2026-07-21 by #187, i.e. after the ruling, and guix.scm
has never existed here — so verisimdb has been carrying the retired tier and
none of the current one.

It is also the repo's lone SupplyChain finding: panic-attack assail flags
flake.nix for declaring inputs without narHash and having no sibling
flake.lock. The packaging-policy question and the security finding are the
same file, which is unusually tidy.

What is lost: nothing. flake.nix was a dev shell, not a package build, and
said so in its own header — it declared just cargo rustc rustfmt clippy. The
new guix.scm is the one-for-one replacement (guix shell -m guix.scm) and
covers strictly more: it adds elixir/erlang for elixir-orchestration/,
coq for the nine modules gated by coq-build.yml, and reuse for the
compliance check — all things this repo actually uses and the flake omitted.

Two deliberate choices, both stated in the file header so nobody has to
reverse-engineer them:

It is a manifest, not a (package ...) with cargo-build-system. A correct
#:cargo-inputs for a 17-crate workspace needs every transitive crate pinned.
A definition that looked like a package build while failing to produce one would
be worse than an honest manifest — this estate already has enough artefacts that
satisfy a presence check without doing anything. Promote it when someone can
build and verify it end to end.

It is NOT written from a template, and that matters here. Guix is not
installed on this machine, so I could not evaluate the file; the header says so
rather than implying it was tested. I also checked the obvious shortcut — the
existing estate guix.scm files — and did not use them, because they are
corrupt. meta-repos/burble, meta-repos/gossamer and meta-repos/paint-type
carry a byte-identical 18-line file declaring:

(name "squisher-corpus")
(home-page "https://github.com/hyperpolymath/squisher-corpus")
(license ... "PMPL-1.0-or-later" ...)

Three unrelated projects, all claiming to be squisher-corpus, all under
Palimpsest rather than their own licence. That is the known clobber incident,
still live in at least those three. Copying one here would have imported a wrong
identity and a wrong licence into a repo whose META.a2ml AD-006 explicitly
records "MPL-2.0 across the workspace (no AGPL)".

docs/rsr-compliance.adoc:164 still lists "guix.scm OR flake.nix" and is
left alone — it describes the RSR standard's requirement, which this change
satisfies, and rewriting a description of an external standard is not mine to do
unilaterally.

Verified: reuse lint 775/775 compliant; no remaining flake.nix/flake.lock
reference anywhere except the rsr-compliance line above.

Needs a follow-up run: guix shell -m guix.scm -- true on a machine with
Guix, to confirm every specification name resolves. If one has drifted, fix the
name — do not delete the file.

The estate retired the Nix fallback on 2026-05-18. `flake.nix` was nonetheless
added to this repo on 2026-07-21 by #187, i.e. *after* the ruling, and `guix.scm`
has never existed here — so verisimdb has been carrying the retired tier and
none of the current one.

It is also the repo's lone `SupplyChain` finding: `panic-attack assail` flags
`flake.nix` for declaring inputs without `narHash` and having no sibling
`flake.lock`. The packaging-policy question and the security finding are the
same file, which is unusually tidy.

**What is lost: nothing.** `flake.nix` was a dev shell, not a package build, and
said so in its own header — it declared `just cargo rustc rustfmt clippy`. The
new `guix.scm` is the one-for-one replacement (`guix shell -m guix.scm`) and
covers strictly more: it adds `elixir`/`erlang` for `elixir-orchestration/`,
`coq` for the nine modules gated by `coq-build.yml`, and `reuse` for the
compliance check — all things this repo actually uses and the flake omitted.

Two deliberate choices, both stated in the file header so nobody has to
reverse-engineer them:

**It is a manifest, not a `(package ...)` with `cargo-build-system`.** A correct
`#:cargo-inputs` for a 17-crate workspace needs every transitive crate pinned.
A definition that looked like a package build while failing to produce one would
be worse than an honest manifest — this estate already has enough artefacts that
satisfy a presence check without doing anything. Promote it when someone can
build and verify it end to end.

**It is NOT written from a template, and that matters here.** Guix is not
installed on this machine, so I could not evaluate the file; the header says so
rather than implying it was tested. I also checked the obvious shortcut — the
existing estate `guix.scm` files — and did not use them, because they are
corrupt. `meta-repos/burble`, `meta-repos/gossamer` and `meta-repos/paint-type`
carry a **byte-identical 18-line file** declaring:

    (name "squisher-corpus")
    (home-page "https://github.com/hyperpolymath/squisher-corpus")
    (license ... "PMPL-1.0-or-later" ...)

Three unrelated projects, all claiming to be squisher-corpus, all under
Palimpsest rather than their own licence. That is the known clobber incident,
still live in at least those three. Copying one here would have imported a wrong
identity and a wrong licence into a repo whose `META.a2ml` AD-006 explicitly
records "MPL-2.0 across the workspace (no AGPL)".

`docs/rsr-compliance.adoc:164` still lists "`guix.scm` OR `flake.nix`" and is
left alone — it describes the RSR standard's requirement, which this change
satisfies, and rewriting a description of an external standard is not mine to do
unilaterally.

Verified: `reuse lint` 775/775 compliant; no remaining `flake.nix`/`flake.lock`
reference anywhere except the rsr-compliance line above.

**Needs a follow-up run:** `guix shell -m guix.scm -- true` on a machine with
Guix, to confirm every specification name resolves. If one has drifted, fix the
name — do not delete the file.
Comment thread guix.scm
@gitar-bot

gitar-bot Bot commented Jul 29, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved 1 resolved / 1 findings

Replaces flake.nix with a Guix manifest, but the specification uses "rust:rustfmt" which is not a valid output since rustfmt ships in the "tools" output.

✅ 1 resolved
Bug: "rust:rustfmt" is likely not a valid rust output

📄 guix.scm:46 📄 guix.scm:31
In Guix the rust package does not expose a rustfmt output; rustfmt (with clippy/rls) ships in the tools output, so guix shell -m guix.scm would fail to resolve rust:rustfmt and abort before providing any of the toolchain. This is unverified (Guix isn't available here and the header already notes it), but it is the most probable name to have drifted. Suggested fix: replace "rust:rustfmt" with "rust:tools" and update the rationale comment on line 31 accordingly, then confirm with the planned guix shell -m guix.scm -- true run.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

@hyperpolymath
hyperpolymath merged commit 96baa43 into main Jul 29, 2026
37 checks passed
@hyperpolymath
hyperpolymath deleted the chore/guix-only-packaging branch July 29, 2026 07:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant