Skip to content

ci: Migrate CI jobs to use Nix environment #1760

@pbeza

Description

@pbeza

Background

Currently, the CI pipeline (.github/workflows/ci.yml) and the Nix development environment (flake.nix) maintain separate version definitions for shared tools like cargo-deny, cargo-nextest, cargo-shear, cargo-sort, zizmor, etc.

This leads to several issues:

  • Maintenance overhead: Updating tool versions requires changes in two places
  • Version drift: Easy to miss syncing versions between CI and Nix, causing local vs CI discrepancies
  • Developer experience: Developers cannot run CI checks locally in exactly the same way as on remote CI

As discussed in #1738 (comment), migrating CI jobs to use Nix would unify the environment, ensuring developers and CI have the exact same tooling and versions.

User Story

No response

Acceptance Criteria

  • CI jobs use the Nix environment defined in flake.nix instead of installing tools via cargo binstall or other methods
  • Tool versions are defined in a single source of truth (Nix flake)
  • All existing CI checks (clippy, fmt, deny, nextest, shear, sort, etc.) pass using the Nix environment
  • CI runners have Nix installed and configured with flakes enabled
  • Documentation updated to reflect the new CI setup
  • Local nix develop environment produces identical results to CI for all linting and testing jobs

Resources & Additional Notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    CIAn issue related to the continuous integration: linters, formatters, tests, etc.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions