Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: "Rust checks"

on:
pull_request:
branches: [ main ]

permissions:
contents: read
actions: read

jobs:
check:
# Target self-hosted runner by label
runs-on: [ nixos ]

# SECURITY: Require manual approval for external PRs
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository }}

steps:
- name: checkout-code
uses: actions/checkout@v4

- name: cargo-check
env:
RUSTFLAGS: "-D warnings" # Make all warnings deny.
run: nix develop --command cargo check

- name: cargo-test
env:
RUSTFLAGS: "-D warnings" # Make all warnings deny.
run: nix develop --command cargo test

# TODO: make clippy work
# - name: cargo-clippy
# env:
# RUSTFLAGS: "-D warnings" # Make all warnings deny.
# run: nix develop --command cargo clippy

- name: cargo-bench
run: nix develop --command cargo bench --no-run # Just to make sure it compiles

- name: cargo-fmt
run: nix develop --command cargo fmt --check

- name: cargo-doc
run: nix develop --command cargo doc

- name: nix-flake-check
run: nix flake check

- name: nix-deadnix
run: nix develop --command deadnix

- name: nix-statix
run: nix develop --command statix check

- name: nix-alejandra
run: nix develop --command alejandra --check .

# TODO: enable hongdown
# - name: markdown-formatting
# run: nix develop --command hongdown --check .


6 changes: 4 additions & 2 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
with pkgs; {
devShells.default = mkShell {
buildInputs = [
(lib.hiPrio rust-bin.nightly."2025-02-01".rustfmt)
rust
cargo-nextest
cargo-semver-checks
Expand All @@ -64,7 +63,10 @@
cargo-tarpaulin # Code coverage
cargo-audit
cargo-machete
taplo
taplo # Format `.toml` files.
deadnix # Nix dead code checker
alejandra # Nix code formatter.
statix # Nix static code checker.
mprocs # Run multiple commands in parallel from `mprocs.yml`, acting essentially as a local CI system.
hongdown.packages.${system}.hongdown
creusot # Execute with `cargo creusot`
Expand Down