Skip to content

ci: add eval and lint gate - #4

Merged
jonringer merged 5 commits into
masterfrom
jonringer/ci-eval-lint
Nov 11, 2026
Merged

jonringer merged 5 commits into
masterfrom
jonringer/ci-eval-lint

Conversation

@jonringer

Copy link
Copy Markdown
Contributor

Adds an eval and lint gate like corepkgs' and r-pkgs', plus the fixes it needs to pass.

Gate

  • lint: nix fmt . -- --ci, using corepkgs' treefmt configuration (exposed as this flake's formatter).
  • eval: ci/eval.sh evaluates every package in every lua.variants.<v>.pkgs set: Lua 5.1–5.5, the _compat variants and the three LuaJITs, 2700 packages in all. Aliases are disabled. The job fails on errors tryEval cannot catch (a missing callPackage argument, a missing attribute, a type error) and on evaluation warnings. Packages that are broken, disabled or unsupported on a given interpreter throw a catchable error and are allowed.

luarocks-nix is excluded. It is defined in corepkgs (pkgs-many/lua/luarocks/luarocks-nix.nix) and takes nurl, which corepkgs does not package, so lua-pkgs can't fix it. The exclusion list in ci/packages.nix says to drop the entry once corepkgs is fixed.

Commits

  • pins: moves the corepkgs and nix-lib pins into flake.lock; pins.nix reads them with builtins.fetchGit, as in r-pkgs. nix-lib now follows corepkgs/nix-lib, which bumps it from 9acd37c to 548c00d.
  • cqueues: gnum4 → m4. gnum4 is an alias.
  • image-nvim: luajitPackages.magick → magick from the package's own set. luajitPackages is an alias, and it also pulled LuaJIT 2.1's magick into every interpreter's set. magick is a LuaJIT FFI binding, disabled outside Lua 5.1 and LuaJIT, so image-nvim is now marked broken on 5.2+ too.
  • treewide: nix fmt, formatting only (41 files).
  • ci: the workflow, ci/ and a README section.

Testing

  • ./ci/eval.sh passes on Nix 2.34 and on Nix 2.3.16.
  • nix fmt . -- --ci is clean.
  • All 2181 buildable drvPaths are identical to master once the two alias fixes are applied there too. So the pin rework, the nix-lib bump and the formatting change no derivation.
  • Built:
    • v5_2.cqueues
    • luajit_2_1.image-nvim
    • v5_1.image-nvim

Moves the pins into flake.lock, as r-pkgs does, so `nix flake update`
maintains them. pins.nix still uses builtins.fetchGit, so evaluation keeps
working on Nix 2.3.

nix-lib now follows corepkgs/nix-lib, which bumps it from 9acd37c to 548c00d.
Every buildable drvPath is unchanged.

The flake also gains legacyPackages and corepkgs' formatter.
gnum4 is an alias for m4, so evaluation fails with aliases disabled.
luajitPackages is an alias for lua.luajit_2_1.pkgs, so evaluation fails with
aliases disabled. It also pulled LuaJIT 2.1's magick into every set,
whatever that set's interpreter. magick is a LuaJIT FFI binding that is
disabled outside Lua 5.1 and LuaJIT, so image-nvim is now marked broken there
as well.
Applies `nix fmt` (corepkgs' treefmt configuration). Formatting only: every
buildable drvPath is unchanged.
Mirrors corepkgs' and r-pkgs' gate:

- lint: `nix fmt . -- --ci`
- eval: ci/eval.sh evaluates every package in every lua.variants set with
  aliases disabled. It fails on anything tryEval cannot catch, and on
  evaluation warnings.

luarocks-nix is excluded. It is defined in corepkgs and takes `nurl`, which
corepkgs does not package.
@jonringer
jonringer merged commit b4c8eb4 into master Nov 11, 2026
2 checks passed
@jonringer
jonringer deleted the jonringer/ci-eval-lint branch November 11, 2026 03:08
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