Skip to content

Commit 96baa43

Browse files
chore(packaging): Guix-only — remove flake.nix, add a real guix.scm (#211)
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.
1 parent 0ea3ae3 commit 96baa43

2 files changed

Lines changed: 53 additions & 34 deletions

File tree

flake.nix

Lines changed: 0 additions & 34 deletions
This file was deleted.

guix.scm

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
;; SPDX-License-Identifier: MPL-2.0
2+
;; SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
3+
;;
4+
;; Guix development manifest for VeriSimDB.
5+
;;
6+
;; guix shell -m guix.scm
7+
;;
8+
;; SCOPE — read this before extending the file.
9+
;;
10+
;; This is a *development environment* manifest, not a package definition. It
11+
;; replaces the `flake.nix` dev shell removed in the same change, one-for-one:
12+
;; that file declared a toolchain, not a build, and said so in its own header.
13+
;; Nothing that existed before is lost by this swap.
14+
;;
15+
;; It is deliberately NOT a `(package ...)` with `cargo-build-system`. VeriSimDB
16+
;; is a 17-crate Rust workspace plus an Elixir/OTP layer; a correct
17+
;; `#:cargo-inputs` enumeration would need every transitive crate pinned, and a
18+
;; definition that merely *looks* like a package build while failing to produce
19+
;; one would be worse than this honest manifest — the estate already has enough
20+
;; artefacts that satisfy a presence check without doing anything. Promote this
21+
;; to a real package definition when someone can build and verify it end to end.
22+
;;
23+
;; NOT VALIDATED LOCALLY: Guix is not installed on the authoring machine, so
24+
;; this file has not been evaluated. Run `guix shell -m guix.scm -- true` before
25+
;; relying on it, and fix rather than delete it if a specification name has
26+
;; drifted.
27+
;;
28+
;; Toolchain rationale — each entry maps to something this repo actually uses:
29+
;;
30+
;; rust, rust:cargo 17-crate workspace under rust-core/ (Cargo.toml)
31+
;; rust:rustfmt `cargo fmt` is enforced in CI
32+
;; elixir, erlang elixir-orchestration/ (mix, 647 tests)
33+
;; coq formal/ — 9 modules, gated by coq-build.yml
34+
;; just formal/Justfile and the root justfile
35+
;; reuse REUSE compliance is a required check (776/776)
36+
;; git, gnu-make assumed by several recipes
37+
;;
38+
;; Deliberately absent: Node, npm, Deno and friends. This repo's own
39+
;; NPM/Bun Blocker and TypeScript/JavaScript Blocker workflows reject them, and
40+
;; a template-supplied toolchain that installed them is exactly the class of
41+
;; drift those gates exist to catch.
42+
43+
(specifications->manifest
44+
(list "rust"
45+
"rust:cargo"
46+
"rust:rustfmt"
47+
"elixir"
48+
"erlang"
49+
"coq"
50+
"just"
51+
"reuse"
52+
"git"
53+
"gnu-make"))

0 commit comments

Comments
 (0)